Arrayメソッドが奇妙な動作をしましたが、何らかの理由があるのでしょうか?それは私にはルビーのバグのようになります。配列メソッドの一貫性のない動作
Array(1)
[1]
Array('')
[""]
Array({})
[] # ???
Array(nil)
[] # ???
私は配列にnil
または{}
を通過したとき、私は1つの要素を持つ配列を取得することが期待、その代わり、私は空の配列を得ました。空の文字列を渡すと、正しく(私の意見では)1つの要素を持つ配列が返されることに注意してください。誰もこの行動の背後にある論理を説明できますか?
私は期待して:
と一致するであろうArray(nil) # => [nil]
Array({}) # => [{}]
:
Array('') # => ['']
それとも別の合理的な行動は次のようになります。
と '一貫性' だろうArray('') # => []
:
Array(nil) # => []
Array({}) # => []
@DaveNewton私が期待していることを明示的に述べるように質問を更新しました – mkk
ハッシュを受け取ったときに明確に定義された動作があるため、明示的には* * *一致しません。私は、あなたの「無関心」の一貫性の議論に同意しませんが、それは意見ではありません。 –
'Array([])'と 'Array({})'は同じ動作をします。両方とも配列エスクのコンテナです。 – tadman