Pharo:#( $H $e $l $l $o ).'Hello' 在 Finder 中没有示例

Pharo: #( $H $e $l $l $o ).'Hello' has no example in Finder

当我转到查找器和 select“示例”时,我不知道如何找到将 #( $H $e $l $l $o ). 变成 'Hello' 的方法。 MethodFinder new findMethodsByExampleInput: #( $H $e $l $l $o ) andExpectedResult: 'Hello'. 也不起作用。

知道怎么做(*),但我想知道如何使用 Finder。

我猜 Finder 根本找不到它?我错过了什么吗?

(*) 例如,一种方法是:String newFrom: #( $H $e $l $l $o ).。另一种方式是:#($H $e $l $l $o) inject: '' into: [ :acc :el | acc, (el asString) ].(虽然我不希望 Finder 找到第二种方式)

找不到。

但是请注意,发送到 #($H $e $l $l $o) 的方法没有一个会用 'Hello' 来回答。存在的是一种方法,它使用参数 #($H $e $l $l $o) 发送到 String 将回答 'Hello'。因此,在这种情况下使用 MethodFinder 的正确方法应该是

MethodFinder new
  findMethodsByExampleInput: {String. #( $H $e $l $l $o )}
  andExpectedResult: 'Hello'.

遗憾的是,#newFrom: 方法未被探索(大多数 class 辅助方法未被探索)。

如果您将其视为将字符集合添加到字符串而不是将集合转换为字符串,您可以搜索:

'' . #( $H $e $l $l $o ) . 'Hello'

在 Finder 中,您将得到结果:

#( $H $e $l $l $o ) joinUsing: '' -> 'Hello'
'' , #( $H $e $l $l $o ) -> 'Hello'
'' join: #( $H $e $l $l $o ) -> 'Hello'