Ruby 기초: 문자열, 배열 및 해시, 이런! (그리고 귀여운 것들)

15733 단어 rubypython
이것은 Python 개발자로서 Ruby Fast 선택의 연속입니다. 다시 말하지만 최소한의 수학으로 예를 기대하십시오.


귀여운 이름!!!!








비키 랑거


@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 , 01 입니다.

우주선 운영자

<=> # 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를 사용하는 경우에만 가능합니다.

    이 시리즈의 첫 번째 게시물을 놓쳤다면 잘 읽었고 고양이가 있다고 들었습니다.


    좋은 웹페이지 즐겨찾기