Smalltalk语法错误

Fla*_*ail 1 smalltalk

我正在学习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:解析错误,预期']'".我对这导致什么感到困惑.它看起来像我的所有方括号对应.救命?

Nor*_*rtl 5

亚历山大告诉你,很可能该集合提供了一种最大的方法.您可能会对如何执行此操作感兴趣.

使用集合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)

与您使用外部迭代的解决方案一起,您可以看到有很多可能性.

希望它增加一些东西