集合中的元素在打印时被截断 - Smalltalk

Elements from collection get truncated when printing - Smalltalk

我对 Smalltalk 非常陌生,所以如果我没有正确地实施这个解决方案,请原谅。

我正在从如下所示的 txt 文件中读取 table:

1 3 5
2 4 7
55 30 50

我正在通过 readStream 读取文件,如下所示:

inStream := inFile readStream.

其中 inFile 是输入文件的地址。

inStream 用于使用此方法构建 table:

readInput: inStream
        
        | line |
        
        rows := OrderedCollection new.
        [ (line := inStream nextLine) notNil ] whileTrue: [ rows add: line.
                                                            Transcript 
                                                                        show: 'read line:';
                                                                        show: line;
                                                                        cr.
                                                          ].

最后,我用这种方法打印特定的列:

printCols: columns
    "comment stating purpose of instance-side method"
    "scope: class-variables  &  instance-variables"
    
    | columnsCollection |
    
    columnsCollection := columns findTokens: ','.

    rows do: [ :currentRow |
                            columnsCollection do: [ :each |
                                                            Transcript 
                                                                    show: (currentRow at: (each asInteger) );
                                                                    show: ' '.                                                                                          
                                                  ].
                            Transcript cr.
              ].

其中 columns 是我感兴趣的以字符串形式传递的列的逗号分隔列表。

我不确定我的 printCols 函数有什么问题,但我看到的输出总是删除给定项目的第二个数字。例如,打印第 1 列时,我会得到:

1
2
5

非常感谢任何帮助!

正如 Leandro Caniglia 在 post 的评论中提到的,问题是 currentRow 是一个字符串,而我期望它是一个集合,因此,在 columnsCollection 循环,我正在访问单个字符而不是集合中的元素。

解决方案是更改我在行中的阅读方式,以确保它们被视为集合的集合而不是字符串的集合。

readInput: inStream

        | line |
        
        rows := OrderedCollection new.
        [ (line := inStream nextLine) notNil ] whileTrue: [ |row|
                                                                row := OrderedCollection new.
                                                                row := line findTokens: ' '.
                                                                rows add: row.
                                                          ].

感谢您的帮助!