我正在学习smalltalk,我正在尝试创建一个非常简单的程序,创建一个数字数组,然后找到最大的数字.我的代码看起来像这样:
| list max |
list := #(1 8 4 5 3).
1 to: list size do: [:i |
max < (list at: i)
ifTrue: [max := (list at: i)].
ifFalse: [max := max].
].
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到"stdin:7:解析错误,预期']'".我对这导致什么感到困惑.它看起来像我的所有方括号对应.救命?
亚历山大告诉你,很可能该集合提供了一种最大的方法.您可能会对如何执行此操作感兴趣.
使用集合max(所有元素的最大值)
#(1 8 4 5 3) max
Run Code Online (Sandbox Code Playgroud)
使用数字max :(两个数字中的哪一个更大)
#(1 8 4 5 3) inject: 0 into: [:max :elem|
max max: elem ]
Run Code Online (Sandbox Code Playgroud)
或者仅使用内部迭代器
#(1 8 4 5 3) inject: 0 into: [:max :elem|
max < elem
ifTrue: [ elem ]
ifFalse:[ max ] ]
Run Code Online (Sandbox Code Playgroud)
与您使用外部迭代的解决方案一起,您可以看到有很多可能性.
希望它增加一些东西
归档时间: |
|
查看次数: |
1311 次 |
最近记录: |