奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

ruby語言跟c#的一些重要差別

時間:2024-06-16 08:26:47 C語言 我要投稿
  • 相關推薦

ruby語言跟c#的一些重要差別

  1.ruby是動態語言,c#是靜態語言--即對象在new出來以后,ruby還可以動態給對象實例添加一些屬性或方法(javascript也是如此)

  2.ruby中刻意弱化了變量類型這個概念,默認情況下變量/方法都不需要聲明具體(返回)類型,但其實在ruby內部,會自動根據變量的值分配類型。(可以通過 “puts 變量.class“查看)

  3.ruby相對c#來講,可能有些雷的地方在于:父類中的private成員,居然是可以在子類中使用的!

  ...其它地方,等學習深入了再寫出來

  最后上一段測試代碼,展示了ruby中類的基本用法:

  復制代碼 代碼如下:

  class People #跟javascript這類動態語言一樣,ruby中的類也沒有public,private這類訪問控制標識符

  def initialize(_name) #構造函數,名字是固定:initialize

  @name = _name; #約定:類的私有變量以@開頭

  end

  def to_string #類似C#中的做法,這里寫一個ToString方法的ruby版

  "My name is #{@name}" #ruby中方法最后一行的值,會被當作函數值返回

  end

  def get_name_size

  return @name.length #這個方法中返回的是數字型(即名稱的長度)

  end

  def test #類定義的最后部分,把這個方法標記為私有方法了

  puts "private method(test) in People."

  end

  def show_name

  test #私有方法,可在內部調用

  puts "name = #{@name}"

  end

  attr_accessor:name #定義一個可讀寫的屬性,這里也體現了ruby的一個重要思想:約定重于規范,因為@name在之前已經使用過,這里的屬性只需要把@去掉,ruby就會自動智能的生成類似c#中 set{value = @name},get{return @name}的語句

  private:test #標明test方法是private屬性的

  protected:get_name_size #標明get_name_size只能在本類或子類定義中使用(或者在子類定義中賦值給子類實例)

  end

  aPeople = People.new("jimmy");#創建一個People的實例

  puts aPeople.to_string #調用to_string方法

  #puts aPeople.get_name_size #將報錯,因為該方法受保護

  #puts aPeople.test #將報錯,因為該方法是私有方法

  aPeople.show_name

  puts aPeople.name

  aPeople.name = "楊俊明" #修改姓名

  aPeople.show_name

  #再定義一個子類

  class Man < People

  def initialize(_name)

  super

  @sex = true

  end

  attr_reader:sex #定義只讀屬性sex

  def call_protected_method

  puts get_name_size #調用父類的受保護方法

  end

  def call_protected_method2(man1)

  puts man1.get_name_size #注意這里:這里可以把父類的受保護方法,動態添加到子類實例

  end

  def call_private_method #子類可以調用父類的私有方法!!! 這一點剛開始很不習慣

  test

  end

  def call_private_method2(man1)

  man1.test #注意這里:語法檢查雖然可以通過,但是運行時會提示私有方法無法調用,這也是private與protected的區別

  end

  end

  puts "******************************"

  aMan = Man.new("jimmy.yang");

  aMan.show_name

  aMan.call_protected_method

  puts aMan.sex

  aMan.call_private_method

  aMan2 = Man.new("Mike")

  aMan.call_protected_method2(aMan2);

  #aMan.call_private_method2(aMan2);

  a = "abc";

  #aMan.call_protected_method2(a); #雖然ruby本身對變量沒有類型概念,但是這樣卻不行,即:在調用父類的受保護方法時,其實是要類型匹配的

  puts aMan.class #顯示aMan的類名稱

  運行結果如下:

  復制代碼 代碼如下:

  >ruby classDemo.rb

  My name is jimmy

  private method(test) in People.

  name = jimmy

  jimmy

  private method(test) in People.

  name = 楊俊明

  ******************************

  private method(test) in People.

  name = jimmy.yang

  10

  true

  private method(test) in People.

  4

  Man

  >Exit code: 0

【ruby語言跟c#的一些重要差別】相關文章:

c#檢測cpu使用率09-01

C語言中的幾個重要概念06-17

c#中預處理指令#if的使用08-18

C語言中的重要概念有哪些08-24

普通話朗誦《差別》10-08

嵌入式Linux操作系統中的一些重要概念10-12

C#實現協同過濾算法的實例代碼06-19

C#抽象工廠模式的幾種實現方法及比較10-20

C#數據結構之循環鏈表的實例代碼10-22

自考常識:自考與成考的差別10-06

主站蜘蛛池模板: 宾川县| 兴化市| 什邡市| 盖州市| 岳西县| 阳曲县| 新闻| 台中市| 依兰县| 吉林省| 杭锦后旗| 德钦县| 威信县| 溧水县| 略阳县| 嘉禾县| 绍兴市| 黑水县| 右玉县| 罗田县| 平乡县| 峡江县| 昌都县| 泗水县| 蓬安县| 绥芬河市| 云龙县| 五莲县| 福海县| 嘉兴市| 东乡族自治县| 辽宁省| 长春市| 巴彦淖尔市| 蓬溪县| 称多县| 正定县| 凌海市| 含山县| 河北区| 黄山市|