Ruby에서 튜플을 사용하십니까?
누구든지 Ruby에서 튜플을 사용합니까? 그렇다면 어떻게 튜플을 구현할 수 있습니까? Ruby 해시는 훌륭하고 거의 잘 작동하지만 Python의 Tuple 클래스와 같은 것을보고 싶습니다. 여기서는 .
표기법을 사용 하여 원하는 값을 찾을 수 있습니다 . Dee for Python 과 유사한 D 구현을 만들 수 있도록 이것을 원합니다 .
간단한 예 :
require 'ostruct'
person = OpenStruct.new
person.name = "John Smith"
person.age = 70
person.pension = 300
puts person.name # -> "John Smith"
puts person.age # -> 70
puts person.address # -> nil
해시와. 표기법 나는 당신이 종류와 다른 종류의 튜플을 의미한다고 가정 할 것 (1. "a")
입니다. 아마도 Struct
수업을 찾고 계실 것입니다 . 예 :
Person = Struct.new(:name, :age)
me = Person.new
me.name = "Guy"
me.age = 30
이것은 엄격하게 튜플은 아니지만 (멤버의 점 표기법을 사용할 수 없음) 목록에서 변수 목록을 할당 할 수 있습니다. 목록에서 루비가 값을 통과하는 문제를 종종 해결할 수 있습니다. 반환 값.
예
:linenum > (a,b,c) = [1,2,3]
:linenum > a
=> 1
:linenum > b
=> 2
:linenum > c
=> 3
저는 Gem for Ruby tuples 의 저자입니다 .
두 가지 클래스가 제공됩니다.
Tuple
일반적으로Pair
특히
다른 방법으로 초기화 할 수 있습니다.
Tuple.new(1, 2)
Tuple.new([1, 2])
Tuple(1, 2)
Tuple([1, 2])
Tuple[1, 2]
두 클래스 모두 몇 가지 보조 메서드가 있습니다.
length
/arity
-튜플 내의 값 수를 반환합니다.first
/last
/second
(단일 쌍)-해당 요소를 반환합니다.[]
특정 요소에 대한 액세스를 제공합니다.
이 트릭으로 Scala 튜플을 모의 할 수 있습니다.
Tuple = Struct.new(:_1, :_2)
2.2.5 :003 > t = Tuple.new("a", "b")
=> #<struct Tuple _1="a", _2="b">
2.2.5 :004 > t._1
=> "a"
2.2.5 :005 > t._2
=> "b"
그러나 여기에서는 구조화 할 수 없습니다.
2.2.5 :012 > a, b = t
=> {:_1=>"a", :_2=>"b"}
2.2.5 :013 > a
=> {:_1=>"a", :_2=>"b"}
2.2.5 :014 > b
=> nil
But thanks to this trick : https://gist.github.com/stevecj/9ace6a70370f6d1a1511 destructuring will work:
2.2.5 :001 > Tuple = Struct.new(:_1, :_2)
=> Tuple
2.2.5 :002 > t = Tuple.new("a", "b")
=> #<struct Tuple _1="a", _2="b">
2.2.5 :003 > t._1
=> "a"
2.2.5 :004 > class Tuple ; def to_ary ; to_a ; end ; end
=> :to_ary
2.2.5 :005 > a, b = t
=> #<struct Tuple _1="a", _2="b">
2.2.5 :006 > a
=> "a"
2.2.5 :007 > b
=> "b"
You can do something similiar with destructuring:
def something((a, b))
a + b
end
p something([1, 2])
This prints out 3
as expected.
참고URL : https://stackoverflow.com/questions/525957/using-tuples-in-ruby
'IT박스' 카테고리의 다른 글
어레이 / 객체에 어떻게 액세스 할 수 있습니까? (0) | 2020.12.12 |
---|---|
정수를 쓰여진 숫자로 변환 (0) | 2020.12.12 |
SIGTERM 처리 방법 (0) | 2020.12.12 |
MySQL 문자열에서 n 번째 단어를 추출하고 단어 발생을 계산하는 방법은 무엇입니까? (0) | 2020.12.12 |
Maven 릴리스 플러그인 실패 : 소스 아티팩트가 두 번 배포 됨 (0) | 2020.12.12 |