반응형
루비 메서드에 여러 인수를 배열로 전달하는 방법은 무엇입니까?
이 같은 레일 도우미 파일에 메서드가 있습니다.
def table_for(collection, *args)
options = args.extract_options!
...
end
이 메서드를 다음과 같이 호출 할 수 있기를 원합니다.
args = [:name, :description, :start_date, :end_date]
table_for(@things, args)
양식 커밋을 기반으로 인수를 동적으로 전달할 수 있습니다. 너무 많은 장소에서 사용하기 때문에 메서드를 다시 작성할 수 없습니다. 어떻게 다른 방법으로 사용할 수 있습니까?
Ruby는 여러 인수를 잘 처리합니다.
여기 꽤 좋은 예가 있습니다.
def table_for(collection, *args)
p collection: collection, args: args
end
table_for("one")
#=> {:collection=>"one", :args=>[]}
table_for("one", "two")
#=> {:collection=>"one", :args=>["two"]}
table_for "one", "two", "three"
#=> {:collection=>"one", :args=>["two", "three"]}
table_for("one", "two", "three")
#=> {:collection=>"one", :args=>["two", "three"]}
table_for("one", ["two", "three"])
#=> {:collection=>"one", :args=>[["two", "three"]]}
(irb에서 출력 잘라 내기 및 붙여 넣기)
다음과 같이 호출하십시오.
table_for(@things, *args)
splat
( *
) 연산자는 방법을 수정할 필요없이, 일을 할 것입니다.
class Hello
$i=0
def read(*test)
$tmp=test.length
$tmp=$tmp-1
while($i<=$tmp)
puts "welcome #{test[$i]}"
$i=$i+1
end
end
end
p Hello.new.read('johny','vasu','shukkoor')
# => welcome johny
# => welcome vasu
# => welcome shukkoor
반응형
'Program Tip' 카테고리의 다른 글
build.gradle에서 사용자 지정 메서드를 정의하고 호출하는 방법 (0) | 2020.11.23 |
---|---|
오른쪽에 카운터가있는 NavigationView 메뉴 항목 (0) | 2020.11.23 |
VB.NET에서 문자열을 Enum 값으로 구문 분석 (0) | 2020.11.23 |
MySQL ORDER BY IN () (0) | 2020.11.23 |
VB.Net 속성-Public Get, Private Set (0) | 2020.11.23 |