Rubyを初めて使用しています関数の定義と変数代入で "ハッシュ"を使用
私が理解したいと思う以下のコードが見つかりました。
1)私は、初期化機能の最初のhash
がパラメータであることを理解しています。ここでもhash
は連想配列ですか?
2)hash['FILENAME']
の2番目のハッシュは、関数defのパラメータを使用しているか、新しいハッシュ(つまり連想配列)を定義していますか?
3)self.myfilename
が要素値が'FILENAME'
の配列に設定されているとしますか?
4)なぜ|| ""
がありますか?
require 'rex/socket'
require 'rex/proto/dhcp'
module Rex
module Proto
module DHCP
Class Server
include Rex::Socket
def initialise(hash, context={})
...
self.myfilename = hash['FILENAME'] || ""
...
最初の 'hash'は関数の定義にあります。つまり、それが何であるかは指定されていません。それは単なるプレースホルダです。 2つ目は、 'hash'という名前の連想配列が存在することを前提としています。 2番目の部分の行が関数定義の内側にある場合は、関数定義のパラメータを使用します。ダブルバーは 'or'を意味するので、実行時に関数に渡されたパラメータが 'FILENAME'要素を含む連想配列でない場合、' self.myfilename'は代替オプションに設定されます。 '' ''(つまり、空の文字列)。 –
用語解説:「連想配列」とは、Rubyを含む非常に少数のプログラミング言語で使用される用語です。 (私が知っている唯一の主流の例外はPHPです。)これは、新規参入者が特別な種類の配列に対してハッシュを間違えさせるため、不幸な言葉です。Rubyには配列とハッシュがあります。それは、あなたがそれらが完全に異なるものであると考えるようになります。彼らが共通しているのは、角括弧( '#[]'というメソッド)を使って両方の要素にアクセスできるということだけです。 –