Ruby 기초: 문자열, 배열 및 해시, 이런! (그리고 귀여운 것들)
귀여운 이름!!!!
비키 랑거
@vicki_langer
알았어 알았어. 루비를 좋아하는 것 같아요. 우리는 해시로켓과 우주선 운영자를 가질 수 있습니다. 나는 그들을 위해 변환합니다
오후 20:16 - 2020년 11월 23일
해시로켓 =>
해시로켓은 해시의 키와 값 사이에 사용됩니다. 파이썬 사전의
:
와 같습니다.=> # hashrocket
# ruby
pet_age = { 'cheeto' => 5, 'wiley' => '>2 ish', 'puppy' => 12, 'remmy' => 4, 'ruger' => 4 }
# python
pet_age = { 'cheeto' : 5, 'wiley' : '>2 ish', 'puppy' : 12, 'remmy' : 4, 'ruger' : 4 }
우주선 운영자 <=>
우주선 운영자는 tree way comparison입니다. 2개의 값을 가져와 우주선의 각 부분과 비교한 다음 3개를 반환합니다.
<=>
에서 얻을 수 있는 유일한 반환 값은 -1
, 0
및 1
입니다.우주선 운영자
<=> # spaceship operator
#ruby
cat_age = 12
dog_age = 5
cat_age <=> dog_age
# output
=> -1 # yep, cat is def older than dog
-1
는 <
를 의미합니다.0
는 =
를 의미합니다.1
는 >
를 의미합니다.귀여운 이름 외에는 오늘 보고할 흥미로운 내용이 많지 않습니다. Python의 내장 함수와 비교하여 Ruby가 사용하는 방법을 알아보기 위해 기본 사항을 살펴보는 것뿐입니다. 대부분 Ruby가 더 나은 이름을 선택한 것 같습니다.
오! 신나는 일을 했습니다. 여러 해시를 함께 매핑하여 다른 카테고리의 인기 영화 목록을 만드는 방법을 찾았습니다.
몇 가지 참고 사항
나중에 참조할 수 있는 많은 예입니다.
문자열 및 일부 메서드
.prepend
다른 것의 처음에 무언가를 추가하다
command = ", leave the cat alone!"
command.prepend("Wiley")
# output
=> "Wiley, leave the cat alone!"
.삭제
문자열에서 특정 문자 제거
string = "Please hire me. I'm excited to learn"
string.delete "aeiou" # removing vowels
# output
=> "pls hr m. I'm xctd t lrn"
배열
Ruby는 Python과 마찬가지로 0부터 시작하는 인덱싱을 사용합니다. 배열은 기본적으로 Python 목록과 동일합니다. the Ruby docs의 배열 메서드는 기본적으로 Python 내장 함수와 동일한 것으로 보입니다.
.삭제
배열에서 특정 값 제거
feels = ["joyful", "irritable", "ecstatic"]
feels.delete "irritable" "mad" # removing negative words
# output
=> ["joyful", "ecstatic"]
그러나
.reject
또는 .select.with_index
가 이러한 항목을 제거하는 더 좋은 방법인 것 같습니다. 그래도 뭐가 문제인지 모르겠습니다.delete
.feels = ["joyful", "irritable", "ecstatic"]
feels.reject { |word| word == "irritable" || word == "mad"}
# output
=> ["joyful", "ecstatic"]
.map 대 .each
얼마 전에
.each
를 볼 때마다 아마도 .map
를 사용해야 한다고 들었습니다. 오늘 나는 그 이유를 배웠다. .map
는 결과를 수집하고 .each
는 결과를 수집하지 않습니다..map
는 데이터를 변경하거나 변환하기 위한 고기입니다.# .each returns the unchanged object
pets = ["cat", "dog", "fish"]
pets.each { |pet| pet * 2 }
# output
=> ["cat", "dog", "fish"]
# .map returns the changed object
pets = ["cat", "dog", "fish"]
pets.map { |pet| pet * 2 }
# output
=> ["catcat", "dogdog", "fishfish"]
그나저나 블록을 여러 번 사용했지만 블록이 무엇을 하고 왜 사용되는지에 대해 이야기한 적이 없는 것 같습니다. 블록은 메서드 뒤의 중괄호 안의 코드입니다. 위의 예에서 그것은
{ |pet| pet * 2 }
입니다. 블록은 데이터가 어떻게 변경되기를 원하는지 보여주기 위해 사용됩니다.해시 및 일부 메서드
사전 == 해시
거꾸로 하다
키와 값 교환
pet_age = { :cheeto => 5, :wiley => '>2 ish', :puppy => 12, :remmy => 4, :ruger => 4 }
pet_age[:chip] = 0.5 #adds to hash
pet_age.invert
# output
=> {5=>:cheeto, ">2 ish"=>:wiley, 12=>:puppy, 4=>:ruger, 0.5=>:chip}
더 큰 .map 예제
ratings = {
:g => 'Little Ones',
:pg => 'Family Time',
:pg13 => 'Older Kids',
}
dictionary = {
:g => { :one => 'ratatouille', :two => 'Wall-e', :three => 'Monsters Inc' },
:pg => { :one => 'Tangled', :two => 'frozen', :three => 'Finding Dory' },
:pg13 => { :one => 'Avatar', :two => 'Hamilton', :three => 'mulan' }
}
selected = ratings.select do |key, words|
key == :g or key == :pg or key == :pg13
end
lines = selected.map do |key, section|
movies = dictionary[key]
parts = movies.map { |key, movie| "#{movie.split.map(&:capitalize).join(' ')}" }
"Popular for #{section}: #{parts.join(", ")}."
end
puts lines.join("\n")
"""
# output
=> Popular for Little Ones: Ratatouille, Wall-e, Monsters Inc.
=> Popular for Family Time: Tangled, Frozen, Finding Dory.
=> Popular for Older Kids: Avatar, Hamilton, Mulan.
"""
위의 예에서 영화 이름의 각 단어를 대문자로 만들기 위해
.split.map(&:capitalize).join(' ')
를 사용해야 했습니다. 이것은 공간에서 끈을 자르고 부품을 대문자로 만든 다음 다시 합칩니다..capitalize
는 첫 번째 단어만 가져오고 .titleize
는 작동하지만 Rails를 사용하는 경우에만 가능합니다.이 시리즈의 첫 번째 게시물을 놓쳤다면 잘 읽었고 고양이가 있다고 들었습니다.
Python 개발자로서 Ruby Fast 선택
Vicki (그녀/그들) ・ 11월 12 '20 ・ 3분 읽기
#ruby
#python
#codenewbie
Reference
이 문제에 관하여(Ruby 기초: 문자열, 배열 및 해시, 이런! (그리고 귀여운 것들)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vickilanger/ruby-basics-strings-arrays-hashes-oh-my-and-cute-things-5e7b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)