RubyとRailsの両方が初めてです。 Railsは最高のAPIの1つであり、Rubyは非常にユニークです。Rubyは巧妙に「仮定」を行って開発者を支援できるようです。しかし、私は何が拡張されるかについてあまり確信がありません。
私の質問は、変数のコロンについてです。
これまで私が理解しているのは、Rubyの:variableは、この変数は変更できないということです。これは、他の言語の定数と同様です。私は正しいですか?
それから私の混乱は、時々私はこのように変数の前にコロンを見る
Rails.application.config.session_store :cookie_store,
key: '_blog_session'
<%= link_to "Delete", article, confirm: "Are you sure?",
method: :delete %>
key:とmethod:の両方の前にコロンがあります。これは何を表していますか?そしてさらに
Blog::Application.routes.draw.do
root :to => "articles#index"
end
変数の間に二重コロンがありますか?今、私はBlog:が1つの変数であり、:Applicationが定数であると推測しています。それは意味をなさないので、私はそれを疑います。教えてください
ありがとうございました
これまでに私が理解しているのは
:variable
Rubyでは、この変数は変更できないということです。これは、他の言語の定数と同様です。
その声明を理解したかどうかわかりません。 Rubyでは、定数は大文字で始まります。
Foo = 1
再割り当てにより警告が生成されます。
Foo = 1
Foo = 2 #=> warning: already initialized constant Foo
変数小文字で始まり、再割り当てによって警告は発生しません(変更されることになっています):
foo = 1
foo = 2 # no warning
記号コロンで始まる:
:a_symbol
:Uppercase_symbol
:"i'm a symbol, too"
それらはしばしば静的な値を表します。 :get
および:post
。シンボルは一度しか作成されないため、メモリ効率がよくなります。同じシンボルリテラルは常に同じオブジェクトを返します。 2つのシンボルが等しいかどうかを確認するのは、簡単な操作です。
両方とも
key:
およびmethod:
(...)これは何を表していますか?
これはハッシュの代替構文です。 IRBに入力して結果を確認できます。
{ foo: 1, bar: 2 }
#=> {:foo=>1, :bar=>2}
変数の間に二重コロンがありますか?今私はそれを推測している
Blog:
は1つの変数であり、:Application
は定数です。
いいえ、Blog
とApplication
はどちらも定数であり、::
はスコープ解決演算子です。ネストされた定数へのアクセスに使用できます。例:
module Foo
class Bar
BAZ = 123
end
end
Foo::Bar::BAZ #=> 123
Rails.application.config.session_store :cookie_store, key: '_blog_session'
session_store
は2つの「引数」を取るメソッドです。
(もsession_store :cookie_store, { key: '_blog_session' }
)
同様にlink_to "Delete", article, confirm: "Are you sure?", method: :delete
"Delete"
は文字列ですarticle
変数{ confirm: '...', method: :delete }
ハッシュconfirm:
、method:
および:delete
は再び記号です。Blog::Application
::は基本的に名前空間解決演算子です。Blog
モジュールのApplicationクラスをアドレス指定する方法。
お役に立てれば。私が参照したドキュメンテーションを見てください、それはかなりうまく説明されています。