*, ?, Ruby의 yield, Python Dev

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


Ruby 학습에 대한 마지막 게시물을 쓴 지 조금 되었습니다. 나는 배우는 것을 멈추지 않았지만 이미 쓴 것을 복습하고 쓸 가치가 없어 보이는 것을 배웠습니다.

어제와 오늘, 나는 나에게 완전히 새로운 몇 가지를 우연히 발견했습니다. 그래서 여기 제가 전에 본 적이 없는 Ruby에 대한 몇 가지 설명과 비수학적인 예가 있습니다.


나에게 새로운 것들



향후 참조를 위한 많은 예제와 설명.

블록



블록은 {} 의 코드 그 이상입니다. doend 사이의 코드를 블록이라고도 합니다. 나는 이것을 알고 있었지만 do에 대해 배우려고 할 때 end/yield 블록을 기억하지 못했습니다. 사실, 그것은 그것에 대한 나의 이해를 막고 있었습니다.

생산하다



그래서 yield가 무엇을 의미하는지 이해하는 것은 저에게 영원처럼 느껴졌습니다. 분명히 yield는 블록에 정보를 전달하거나 보내는 중입니다.

def greet_pets(list)
    i = 0
    while i < list.length
        yield list[i] # send element 
        i = i + 1
    end
end

pets = ["Cheeto", "Remmy", "Wiley", "Puppy", "Chip"]

greet_pets(pets) do |name|
    if name.end_with?("y")
        puts "Hi, #{name}, how was your day?"
    end
end

# output
Hi, Remmy, how was your day?
Hi, Wiley, how was your day?
Hi, Puppy, how was your day?
=> nil

표시 *



이것은 나에게 새로운 것입니다. 나는 파이썬이 이것을 가지고 있다고 확신하지만 그것은 여전히 ​​나에게 새롭고 이 목록에 속합니다.

매개변수에 표시*를 사용하면 지정되지 않은 양의 항목을 지정할 수 있습니다. 그것은 0이 될 수도 있고 1000이 될 수도 있습니다.

def print_pets *pets
    puts pets.join(', ')
end

print_pets("Cheeto", "Wiley", "Puppy", "Remmy", "Chip")

# output
Cheeto, Wiley, Puppy, Remmy, Chip

NoMethodError



터미널은 매우 유용한 환상적인 놀라운 오류를 제공합니다. 나는 두렵다. 이 오류가 발생했을 때 코드에 if name.ends_with?("y")가 있었습니다.

NoMethodError (undefined method `ends_with?' for "Cheeto":String)
Did you mean?  end_with?


반품



이것은 거짓말입니다. return은 나에게 새로운 것이 아닙니다. 그것은 내가 항상 이해하는 시간이 많았던 것입니다.
return 변수에 물건을 저장하는 데 사용되는 것 같습니다. puts는 나중에 사용할 수 있도록 저장하는 대신 화면에 내용만 표시하기 때문에 이 작업을 수행할 수 없습니다.

내장 ? 행동 양식



나는 ?가 포함된 이러한 방법 중 하나를 볼 때마다 놀라움을 금치 못합니다. 그들은 항상 나를 전나무에 던지고 그들이 일을 얼마나 단순하게 만드는지에 놀랐습니다.

그들은 코드가 영어를 구사하는 것처럼 자연스럽게 느껴지도록 만듭니다. 나는 팬이다.

block_given?



def make_bio(name, language, *pets)
    puts "Hi, I'm #{name} and I do #{language} programming"
    if block_given?
        yield pets
    else
        puts pets
    end
end

make_bio("Vicki", "Python & Ruby", "Cheeto", "Chip"){|pets| puts pets.join(' & ') + " btw, yield was used"}

# output
Hi, I'm Vicki and I do Python & Ruby programming
Cheeto & Chip btw, yield was used
=> nil



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


좋은 웹페이지 즐겨찾기