Jekyll宝石のbin/jekyll
の最初の行には、次の構文を使用しています。 IRBのスプラットの有無にかかわらずその行を実行すると、同じ出力になります"./../lib"
。このRubyの配列構文
https://github.com/mojombo/jekyll/blob/master/bin/jekyll
Jekyll宝石のbin/jekyll
の最初の行には、次の構文を使用しています。 IRBのスプラットの有無にかかわらずその行を実行すると、同じ出力になります"./../lib"
。このRubyの配列構文
https://github.com/mojombo/jekyll/blob/master/bin/jekyll
少なくともルビー1.9.3において、join
方法の両方の用途には同等であると思われます。 Under the hoodの場合、配列の要素は再帰的にパスに変換され、無限再帰を特別に防ぎます。
したがって、これは正常に動作します:
File.join 'a', ['b', ['c']]
一つは、スプラットオペレータの目的は、再帰を排除することであると主張するかもしれません。
File.join 'a', *['b', ['c']]
これに相当します:問題は、これがあることである
File.join 'a', 'b', ['c']
再帰を解消するためには、アレイとをflatten
する必要があり、その後スプラットそれ:
File.join 'a', *['b', ['c']].flatten
パラメータリストのコンテキストでは、s plat演算子は、配列の括弧を "削除"します。それは、この中で結果:
# File.join receives 3 strings as parameters
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
これとは対照的に:
# File.join receives 2 parameters, one string and one array of strings
$:.unshift File.join(File.dirname(__FILE__), ['..', 'lib'])
*は引数を平坦化します。スプラットと同等
File.join(File.dirname(__FILE__), ["..", "lib"])
:スプラットせずに等価
File.join(File.dirname(__FILE__), "..", "lib")
私はそれを同じように扱いますFile.join
この場合には推測します。しかし、documentationはそれらを平坦化する必要があることを示しています。さて、著者が単に配列なしでそれを書かなかったのはなぜか、ORスプラットは別の問題です。