('a'..'z').each { |a| puts a}
을 입력하면 데이터 유형 수준에서 정확히 무슨 일이 벌어지고 있습니까? 나는 그것이 인쇄 될 때, 그것은 개별 문자열 인 것을 알고 있지만 'a'..'z'
은 독자적으로 무엇입니까? 배열입니까?어떤 종류의 데이터 유형 ('a'.. 'z')입니까?
0
A
답변
6
3
그것은 Range입니다 :
irb(main):001:0> ('a'..'z').class
=> Range
0
귀하의 질문의 두 번째 부분에 대답하기 위해, 'a'..'z'
는 Range
이다. 다른 사람이 말한 것처럼 :
('a'..'z').class # => Range
데이터 유형 수준에서 무슨 일이 일어나고 있는지에 대한 질문의 첫 부분에 대답하기 위해, 범위는 여러 가지 방법으로 배열 같다. 글자를 범위 끝점으로 사용할 때 범위에는 배열과 마찬가지로 개별 요소가 포함됩니다. 즉, 'a'
에서 'z'
까지의 모든 문자를 포함합니다. 정수를 사용할 때도 마찬가지입니다. 1..5
은 1
, 2
, 3
, 4
및 5
을 포함합니다. Array
class처럼 Range
에는 Enumerable
module이 포함되어 있으므로 each
과 같은 여러 가지 방법이 있습니다. 귀하의 예에서는 each
이 범위 구성원을 반복합니다.
범위는 몇 가지 중요한 방식으로 배열과 다릅니다.
먼저 Float
값을 끝점으로 사용할 수 있습니다. 당신이 그와 같은 범위를 반복 할 때, 그것이 오류가 발생합니다
(1.1..5).class # => Range
: 예를 들어, 1.1..5
는 유효 범위 그 범위의 요소가 아니기 때문에
(1.1..5).each { |a| puts a } # => TypeError: can't iterate from Float
입니다 이산. 범위는 연속입니다.
..
대신 ...
을 사용하여 두 번째 끝점을 제외하는 방식으로 정의 할 수있는 범위도 배열과 다릅니다. 예를 들어 'a'...'z'
에는 'a'에서 'y'까지의 문자가 포함됩니다. 'z'가이 범위에 있지 않습니다. 이를 증명하기 위해 ('a'...'z').each { |a| puts a }
을 시도 할 수 있습니다.
관련 문제
- 1. 데이터 유형 '위치'는 어떤 종류의 데이터를 저장합니까?
- 2. 어떤 종류의 데이터 구조입니까?
- 3. 어떤 종류의 데이터 유형입니까?
- 4. 어떤 종류의 데이터 구조입니까?
- 5. 어떤 종류의 데이터 모델입니까
- 6. 어떤 종류의 mongodb 데이터 유형입니까?
- 7. 어떤 종류의 인수가 전달됩니까?
- 8. 어떤 종류의 객체입니까, 반응합니까?
- 9. 어떤 종류의 압축이 있습니까?
- 10. Google지도처럼지도를 만들려면 어떤 종류의 데이터 구조를 사용해야합니까?
- 11. 데이터 압축기에는 어떤 종류의 수학이 필요합니까?
- 12. 델파이 : 어떤 종류의 구조에 데이터 저장
- 13. 어떤 종류의 VB6 파일이 데이터 보고서를 생성합니까?
- 14. "long long"은 어떤 종류의 데이터 유형입니까?
- 15. "학습 트리"는 어떤 종류의 데이터 구조입니까?
- 16. 거리 주소는 어떤 종류의 데이터 유형입니까?
- 17. 어떤 종류의 데이터 구조를 사용해야합니까? 쌍
- 18. iOSK : ABRecordRef는 어떤 종류의 데이터 유형입니까?
- 19. 데이터 센터 관리자는 어떤 종류의 문제에 직면하게됩니까?
- 20. 어떤 종류의 데이터 구조를 사용할 수 있습니까?
- 21. 어떤 종류의 재귀입니까?
- 22. 어떤 종류의 수업 정보입니까?
- 23. 어떤 종류의 반복입니까?
- 24. 어떤 종류의 기록이 남을까요?
- 25. Delphi는 어떤 종류의 연산자 오버로드를 지원합니까?
- 26. 이 테스트는 어떤 종류의 테스트입니까?
- 27. 종류의 유형 예를 들어
- 28. 어떤 종류의 매크로가 리눅스의 어떤 종류의 파일 시스템에 대응합니까?
- 29. 어떤 종류의 자바 스크립트입니까?
- 30. 어떤 종류의 암호화입니까?