我已經對此進行了在線研究,并在 SO 上搜索了解決方案,但仍然沒有。需要一種簡單、高效、節省時間和空間的方式來呼叫一個類中的所有函式
在這里,我在里面定義Class了很多methods。結束后Class,我必須呼叫所有定義methods來執行每個內部的代碼塊methods。
class Sample
def initialize(arg1, arg2)
@arg1 = arg1
@arg2 = arg2
end
def method1
puts @arg1
end
def method2
puts @arg2
end
def method3
puts "This is method3"
end
def method4
puts "This is method4"
end
.............
.............
............. etc...
end
現在創建一個object用于呼叫classandmethod
object = Sample.new(par1, par2)
object.method1
object.method2
object.method3
object.method4
.............
............. etc...
methods使用 逐個呼叫object.method_name(parameter)非常困難,并且需要很長時間的空間和時間。是否可以methods通過單行代碼(或)以任何其他有效方式呼叫所有代碼?
uj5u.com熱心網友回復:
是否可以
methods通過單行代碼呼叫所有
是的,這是可能的。
就個人而言,我不會癡迷于將所有內容都壓縮成一行。它不會使代碼更小,不會使代碼更好,也不會使代碼更易于閱讀。但這在技術上是可行的。
在 Ruby 中,換行符總是可選的。它們總是可以用其他東西代替。如果換行符用作運算式分隔符,可以用分號(;)代替,分號也是運算式分隔符。如果換行符用于終止某些句法元素,則可以用分號 ( ;)、關鍵字(例如thenin ifand unless、whenin case、doin for、whileanduntil等)替換,有時也可以只替換為空格。
因此,您可以像這樣在一行中撰寫代碼:
object = Sample.new(par1, par2); object.method1; object.method2; object.method3; object.method4; # … etc …
methods使用 逐個呼叫object.method_name(parameter)非常困難,并且需要很長時間的空間和時間。
無論您是在一行還是多行上撰寫代碼,都不會影響程式的空間或時間要求。
如果按順序執行方法,空間需求將是所有方法的空間需求的最大值,時間需求將是所有方法的時間需求的總和。
您可以并行執行這些方法。在這種情況下,空間需求將是所有方法的空間需求之和,時間需求將是所有方法的時間需求的最大值加上協調并行執行并將結果重新合并在一起所需的任何時間. 此外,并行執行這些方法會改變程式的結果!
無論哪種方式,你只能改善空間或時間,而不是兩者。
uj5u.com熱心網友回復:
您需要添加任何前綴,例如auto __call__您需要在單行動態代碼中自動呼叫的方法名稱
只需在方法名稱陣列中使用簡單的字串操作查找方法名稱,然后使用send方法呼叫它們
class Sample
def initialize(arg1, arg2)
@arg1 = arg1
@arg2 = arg2
end
def auto__call__method1
puts @arg1
end
def auto__call__method2
puts @arg2
end
def auto__call__method3
puts "This is method3"
end
def auto__call__method4
puts "This is method4"
end
end
object = Sample.new('arg1', 'arg2')
object.public_methods
.select{ |m| m.to_s.include? 'auto__call__'}
.each{ |auto__call_method| object.send(auto__call_method) }
輸出
arg2
This is method3
This is method4
arg1
如果您在方法呼叫中需要任何總統職位然后添加總統職位前綴然后對方法名稱進行排序然后呼叫它
像下面
class Sample
def initialize(arg1, arg2)
@arg1 = arg1
@arg2 = arg2
end
def auto__call_4_method1
puts @arg1
end
def auto__call_3_method2
puts @arg2
end
def auto__call_2_method3
puts "This is method3"
end
def auto__call_1_method4
puts "This is method4"
end
end
object = Sample.new('arg1', 'arg2')
object.public_methods
.select{ |m| m.to_s.include? 'auto__call_'}
.sort
.each{ |my_method_name| object.send(my_method_name) }
輸出
This is method4
This is method3
arg2
arg1
uj5u.com熱心網友回復:
您能否提供更多背景關系這些方法應該做什么?我想我會在那里添加一個額外的方法來為你呼叫它們。
def call_em_all
method1
method2
method3
method4
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523046.html
標籤:红宝石班级方法
