質問

artoo.io の上部に何が起こっているのかについての説明を探しています。ロボットキーボードドライバを使用してこの例の上部に宣言があります。

require 'artoo'

connection :keyboard, adaptor: :keyboard
device :keyboard, driver: :keyboard, connection: :keyboard
.

いくつかの短縮/代替構文が表示されているようです、そして私はその略数の説明を愛しています。代替ハッシュ構文::adapter => :keyboard

上記のコードの最後の2行のコードで何が起こっているのですか?connectionとは何ですか?初期化されているartoo内のクラスですか?newがないのはなぜですか?:keyboardはどこから来たのですか?関係をより明確に表す代替構文がある場合は、それを示すことができますか?

役に立ちましたか?

解決

これは素晴らしい質問です。それは重複するかもしれませんが、私は1つを見つけることができませんでした、そしてこれはRubyに新しい賢いプログラマーにとって難しいことです。

最初の質問に:connectionとは何ですか?

それはメソッド呼び出しです。場合によっては、メソッドとは何ですか、変数とは何ですか。しかし、この場合、connectionはその後パラメータを持っているので明確です。 Rubyでは、方法は次のように呼び出すことができます:

foo
.

その場合、パラメータがない方法です。それともこのように見えることができます:

foo 1, 2, 3
.

それは3つのパラメータを持つメソッドです。それともこのように見えることができます:

foo(1, 2, 3)
.

それは同じ方法ですが、わずかに異なる構文で(C、C ++、Java、JavaScript、C#などのC模倣言語では、人々にとってよりよく知られています。)

SO裸語の後に表示されているパラメータが表示されたら、演算子がない場合は、それが確実な符号であることはメソッド呼び出しです。

今すぐあなたのコードを完全に壊す。

require 'artoo'
.

技術的にはメソッド呼び出しです。 requireメソッドを呼び出し、リテラル文字列'artoo'の単一のパラメータを渡しています。おそらく知っているように、requireは外部のRubyファイルを現在のファイルにロードします。

connection :keyboard, adaptor: :keyboard
.

これは、いくつかの構文砂糖

のメソッド呼び出しです。

connectionがメソッド呼び出しであることをわかります(connectionと後に起こるものの間の演算子はいません)。しかし、どのパラメータ?

:keyboardシンボルは、Rubyの Intern'D文字列

adaptor: :keyboardは、

です。

Rubyには2つのプライマリハッシュ構文があります。

{key => value}
.

keyvalueはすべてのオブジェクト、または:

です。
{key: value}
.

keyはBareリテラルシンボルで、valueは任意のオブジェクトです。また、コードをきれいにするには、ハッシュを last パラメータとしてメソッドに渡すと、{}を省略することができます。クリーンな「名前付きパラメータ」スタイルのメソッド呼び出しを与えます。

do_something_to my_person, kindness: 10, aggressiveness: 2
.

あなたのコードの:

connection :keyboard, adaptor: :keyboard
.

{}を除いて、代替ハッシュ構文(シンボルキー)を停止します。ライン全体は:

connection(:keyboard, {:adaptor => :keyboard})
.

あなたの最後の行:

device :keyboard, driver: :keyboard, connection: :keyboard
.

は同じことです。 :

device(:keyboard, {:driver => :keyboard, :connection => :keyboard})
.

それはちょうど(あなたがそれに慣れたら)。

他のヒント

あなたの例では、connectiondeviceはメソッドです。adapter: :keyboarddriver: :keyboardビット、:connection: :keyboardビットは、それらの方法にハッシュとして渡されるパラメータです。connection()とdevice()に渡された最初のパラメータはハッシュに渡されていません。

同じコードはこのように書き換えることができます:

connection :keyboard, { adaptor => :keyboard }
device :keyboard, { driver => :keyboard, connection => :keyboard }
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top