有没有办法在 Pharo 的操场内自动缩进代码?

如何解决有没有办法在 Pharo 的操场内自动缩进代码?

我注意到,在使用 Pharo 时,无论我在 Playground 中输入代码的方式如何,如果我尝试运行它,但存在一些问题,当调试器打开时,它会显示您的代码很好地缩进。

例如,如果我在操场上有这个缩进不明显的程序:

| banditA banditB testBandits multiRun results |
banditA := [ 1.0 random <= 0.6 ifTrue: [ 1.0 ] ifFalse: [ 0.0 ] ].
banditB := [ 1.0 random > 0.6 ifTrue: [ 1.0 ] ifFalse: [ 0.0 ] ].

"Tests banditA and banditB n times each,to see which one is better."
testBandits := [ :n |
    | A B |.
    A := 0.0.
    B := 0.0.
    n timesRepeat: [ A := A + banditA value ].
    n timesRepeat: [ B := B + banditB value ].
    A  > B  
        ifTrue: [ { A + B . banditA} ]
        ifFalse: [ A < B 
                        ifTrue: [ { A + B . banditB} ]
                        ifFalse: [ { A + B . { banditA. banditB } atRandom  } ] ] ]. 

"Accumulate the results of size - 2 * nTests number of trials of winning
bandits,each preceded with a explore phase with 2 * nTests (half to each
bandit."
multiRun := [ :nTests :size |
    | testResults sum |
    sum := 0.0.
    testResults := (testBandits value: nTests).
    2 * nTests negated + size timesRepeat: [ sum := sum + (testResults at: 2) value ].
    sum ].

"Average the returns of a thousand runs,to each even number of tests between 1 and
size = 1000."
results := (1 to: 500) collect:
    [ :n | { 2*n. ((1 to: 1000) collect: [ :each | multiRun value: n value: 1000]) average}].

Transcript clear; show: 'Number of tests;Return'; cr.
results do: [ :each | Transcript show: (each at: 1); show: ';'; show: (each at: 2); cr ].

results sorted: [ :first :second | (first at: 2) > (second at: 2) ]

如果我使用 Ctrl+Shift+D 打开此代码示例中的调试器,调试器会显示一个格式良好的 DoIt 对象,减去注释:

DoIt
    | banditA banditB testBandits multiRun results |
    banditA := [ 1.0 random <= 0.6
        ifTrue: [ 1.0 ]
        ifFalse: [ 0.0 ] ].
    banditB := [ 1.0 random > 0.6
        ifTrue: [ 1.0 ]
        ifFalse: [ 0.0 ] ].
    testBandits := [ :n | 
    | A B |
    A := 0.0.
    B := 0.0.
    n timesRepeat: [ A := A + banditA value ].
    n timesRepeat: [ B := B + banditB value ].
    A > B
        ifTrue: [ {(A + B).
            banditA} ]
        ifFalse: [ A < B
                ifTrue: [ {(A + B).
                    banditB} ]
                ifFalse: [ {(A + B).
                    {banditA.
                    banditB} atRandom} ] ] ].
    multiRun := [ :nTests :size | 
    | testResults sum |
    sum := 0.0.
    testResults := testBandits value: nTests.
    2 * nTests negated + size
        timesRepeat: [ sum := sum + (testResults at: 2) value ].
    sum ].
    results := (1 to: 500)
        collect: [ :n | 
            {(2 * n).
            ((1 to: 1000) collect: [ :each | multiRun value: n value: 1000 ])
                average} ].
    Transcript
        clear;
        show: 'Number of tests;Return';
        cr.
    results
        do: [ :each | 
            Transcript
                show: (each at: 1);
                show: ';';
                show: (each at: 2);
                cr ].
    ^ results sorted: [ :first :second | (first at: 2) > (second at: 2) ]

经过一番挖掘,我发现类浏览器中有一个格式化源代码的选项,只需右键单击源代码,然后选择源代码> 格式化代码:

enter image description here

但我找不到对操场内的源代码执行相同操作的方法,因为右键单击时未显示源代码 > 格式代码选项。如果我在操场内尝试键盘快捷键 Ctrl-T,它只会擦除所选的任何内容。我可以将代码从 Playground 复制到浏览器中,在那里格式化,然后将其复制回 Playground,或者可以打开示例上的调试器,然后将格式良好的代码复制到 Playground 中,擦除 DoIt 顶行和从最后一行的表达式中返回符号 ^,但这并不方便。所以我想知道是否有适当的方法。

顺便说一下,我用作示例的代码示例是我尝试模拟 Multi-armed bandit problem 一书中描述的心理实验中使用的 Algorithms to Live By: The Computer Science of Human Decisions 实例:

“一旦你熟悉它们,就很容易看到多臂 我们到处都是强盗。我们很少制作 孤立的决定,结果不会为我们提供任何 我们将来会用来做出其他决定的信息。所以 很自然地会问,就像我们在优化停止时所做的那样,人们有多好 通常倾向于解决这些问题——这个问题一直存在 心理学家和行为学家在实验室中进行了广泛的探索 经济学家。总的来说,人们似乎倾向于过度探索—— 不成比例地偏爱新的而不是最好的。在一个简单的 这种现象的证明,发表于 1966 年,Amos Tversky 和 Ward Edwards 进行了实验,向人们展示了一个盒子 上面有两盏灯,并告诉每盏灯会打开一个固定的(但 未知)时间的百分比。然后给了他们 1,000 有机会观察哪个灯亮了,或者下注 在没有得到观察它的结果。 (不像更多 传统的老虎机问题设置,在这里无法“拉” 这既是赌注又是观察;参与者不会 了解他们的赌注是否在最后得到了回报。)这是纯粹的 探索 vs. 开发,在获取信息上进取 坚决反对使用它。在大多数情况下,人们采用了 观察一段时间,然后押注什么的明智策略 似乎是最好的结果——但他们总是花更多的钱 观察时间比他们应该有。还有多少时间?在一 实验中,一盏灯有 60% 的时间亮,另外 40% 的时间亮 时间,差异既不特别明显也不特别 微妙的。在那种情况下,人们平均选择观察 505 次, 下注其他 495 次。但数学说他们应该有 仅在 38 次观察后开始下注 - 留下 962 次兑现机会 在。”

我想看看我是否可以得出 38 这个数字作为最佳数字,所以我写了这个模拟。非常接近,此图显示了一次运行的结果:

enter image description here

此特定运行的最大值为 34,非常接近 38。运行之间存在一些差异,因为曲线在顶部有点嘈杂,但最大值始终与 38 相差不到 10 个位置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res