Rubyを体験する20分
20 Minutes Experience Ruby
20分でRubyを体験してください: http://www.ruby-lang.org/zh_cn/documentation/quickstart/
インストール:3つの方法:ソースコードrubyinstaller.exe ruby.exe
実行:cmd-> irb
-------------------------
簡単な例:
1、
>「HelloWorld」を置く
こんにちは世界
=> nil // nilはRubyのnull値であり、putsコマンドはnilを返します
二、
> 3 * 2
=> 6
> Math.sqrt(9)// Mathは独自のデータモジュール、module:同じ関数を持つ関数は同じ名前で配置されます。
=> 3.0
> a = 3 ** 2 // **は力の意味です。変数aに値を割り当てます。
=> 9
3、
関数の定義
> def h //関数を定義する
> puts'Hello World '
> end //関数は終了します
=> nil
関数を呼び出して、hまたはh()と直接入力します。
------------
> def h(name)//パラメータを追加
> puts'Hello#{name}! '
>終了
------------
> def h(name = 'defaultName')//入力パラメータのデフォルト値を追加
> puts'Hello#{name.capitalize}! ' //入力パラメータの文字列値を使用し、最初の文字を大文字にします
>終了
呼び出し:h '世界'または:h
------------
4、
クラスの定義
クラスグリーター
def initialize(name = 'World')
@name = name // @nameはインスタンス変数です
終わり
def say_hi
puts'Hello#{@ name}! '
終わり
def say_bye
「バイ#{@ name}!すぐに戻ってきてください!」
def
終わり
クラスを使用する:
> Greeter.new( 'Pat')
=>#
> g.say_hi
--------
> g.name //エラーオブジェクト指向のコンパイル、属性の非表示
--------
> Greeter.instance_methods //継承されたクラスのメソッドを出力したくない場合は、すべてのメソッドを出力します。多くは親クラスから継承されます。
> Greeter.instance_methods(false)
--------
Respond_toは、オブジェクトが指定されたメソッドに反応するかどうかをテストする組み込み関数です。
> g.respond_to?( 'name')//いいえ
=> false
> g.respond_to?( 'say_hi')
=> true
> g.respond_to?( 'to_s')// to_sは組み込み関数です
=> true
--------
クラスを印刷して変更すると、rubyはプロパティ名を取得して変更することもできます
> class Greeter //クラスを開く
> attr_accessor:name // attr_accessorによってプロパティを変更します。2つのメソッドが導入されます:name(変数の値を読み取る//)name = method(変数を割り当てる)
>終了
> g = Greeter.new( 'kity')
> g.respond_to?( 'name')
=> true
> g.respond_to?( 'name =')
=> true
> g.name = 'kity2'
> g.say_hi
=>こんにちはkity2!
------------------------
コードの大きな波...
#!/usr/bin/env ruby class MegaGreeter attr_accessor : names # Create the object def initialize(names = 'World') @name = names end # Say hi to everybody def say_hi if @names.nil? puts '.....' elsif @names.repond_to?('each') # @names is a list of some kind,iterate! @names.each do |name| puts 'Hello #{name}!' end else puts 'Hello #{@names}!' end end # Say bye to everybody def say_bye if @names.nil? puts '......' elsif @names.respond_to?('join') # Join the list elements with commas puts 'Goodbye #{@names.join(', ')}. Come back soon!' else puts 'Goodbye #{@names}. Come back soon!' end end end if __FILE__ == $0 mg = MegaGreeter.new mg.say_hi mg.say_bye # Change name to be 'Zeke' mg.names = 'Zeke' mg.say_hi mg.say_bye # Change the name to an array of names mg.names = ['a', 'b', 'c'] mg.say_hi mg.say_bye @Change to nil mg.names = nil mg.say_hi mg.say_bye end
ファイルを保存します:ri20min.rb、次に実行します:ruby ri20min.rb
上記のコードでは、each関数を使用します。これは、各要素で繰り返されると、受け入れられたコードのブロックを呼び出すコードのブロックを受け入れる関数です。コードブロックは、名前を付ける必要のない関数のようなものです。
@names.each do |name| //very beautiful puts '#{name}'
-----------------------
コードブロック
コードブロックは、反復リストよりも面倒な作業を処理するために使用され、アンインストールを自動的にインストールしたり、ランタイムエラーを処理したりするために使用できます。本当にユーザーを心配させ、安心させてください。
@ names.respond_to?( 'join')を使用すると、このスタイルは 'duck-type'と呼ばれます。アヒルのように歩き、アヒルのように聞こえます。
-------------------------
if __FILE__ == $0
__FILE__は現在実行中のスクリプトのファイル名を保持し、$ 0は起動スクリプトの名前です。上記のセマンティクス:実行中のスクリプトが起動スクリプトの場合は、次のコードを実行します。これには、呼び出されたときにスクリプトが使用された場合、これを実行できないという利点があります。
--------------
イントロ:より深い概念のポイントコードブロック/イールド/モジュール/ミックスイン待つ