iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 30
1

self

Ruby環境裡得self,會因為不同的範圍以及呼叫方式得不同,而代表的物件也不相同。
首先我們先來看self是什麼:

> self  #=> main
> self.class  #=> main
> self.is_a? Object  #=> true
當我們印 self 得到 main,main 為 ruby 最頂層 ( top-level ) 物件,我們不指派任何東西給他。
> self = 1  #=> 出現錯誤訊息
> abc = 1  #=> 1

類別定義 ( class definition ),self 為 A 類別本身

class A
  p self
end
=>  A
類別方法 ( class method ),self 為 A 類別本身
class A
  def self.say_hi
    p self
  end
end
A.say_hi
=>  A

實體方法 ( instance method ),self 為 A 的實體

class A
  def say_hi
    p self
  end
end
p a = A.new
a.say_hi
=>  #<A:0x00007fbf020ec0e0>
模組定義 ( module definition ),self 為 B 模組本身
module B
  p self
end
=>  B

繼承 ( inheritance ),self 為 B 的實體

class A
  def say_hi
    p self
  end
end
class B < A
end
abc = B.new
abc.say_hi
=>  #<B:0x00007fd14207e700>

引入模組 ( include module ),self 為 B 的實體

module A
  def say_hi
    p self
  end
end
class B
  include A
end
abc = B.new
abc.say_hi
=>  #<B:0x00007fecd190e9b0>

例句到這裡就先結束啦,其實爬了一堆文章還是覺得很抽象啊 ?
也許哪天別人問我什麼是 self 我可能還是會說:就是自己啊!


再來就要來偷一下Ruby女孩的梗,Ruby女孩 10萬.times{puts '為什麼'}
我大概是10萬.times{puts '謝謝'}
謝謝那些盯著我參賽的老師同學
謝謝願意幫我這個笨腦袋想題材的有魚?
謝謝專題組員都很善良讓我提早回家寫文章
也謝謝不知道是誰,但是願意幫菜鳥文章按like,這是很大的鼓勵呀!
專題跟鐵人同步進行,每天都要努力擠出時間!真得沒想過自己真得可以這樣撐到第三十天啊!XD
總之,我做到了。:.゚ヽ(*´∀`)ノ゚.:。


上一篇
Day29 | Partial Render
系列文
從色彩繽紛到只看亂碼日子,學程式從 Ruby 出發!30

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2020-02-09 10:24:23

恭喜完賽 ^^

我要留言

立即登入留言