문제

상단에서 무슨 일이 일어나고 있는지에 대한 설명을 찾고 있습니다. artoo.io 로봇.키보드 드라이버를 사용하는 이 예제의 상단에 선언이 있습니다.

require 'artoo'

connection :keyboard, adaptor: :keyboard
device :keyboard, driver: :keyboard, connection: :keyboard

일부 속기/대체 구문이 표시되는 것 같으며 해당 속기에 대한 설명을 듣고 싶습니다.대체 해시 구문을 이해합니다. :adapter => :keyboard.

위 코드의 마지막 두 줄에서는 무슨 일이 일어나고 있나요?무엇인가요 connection?내부 수업인가요? artoo 그거 초기화 중이야?왜 없나요? new?어디에서 :keyboard 에서 왔어?관계를 더 명시적으로 나타내는 대체 구문이 있다면 그것도 보여줄 수 있습니까?

도움이 되었습니까?

해결책

이것은 좋은 질문입니다.중복일 수도 있지만 찾을 수 없었고 이는 Ruby를 처음 접하는 똑똑한 프로그래머에게는 까다로운 일입니다.

먼저 귀하의 질문에 :무엇인가요 connection?

이것은 메소드 호출.어떤 경우에는 메소드가 무엇인지, 변수가 무엇인지 구분하기 어려울 수 있습니다. 정의 방법에 따라 달라지기 때문입니다.하지만 이 경우에는 분명합니다. connection 그 뒤에 매개변수가 있습니다.Ruby에서는 다음과 같이 메소드를 호출할 수 있습니다.

foo

이 경우 매개변수를 사용하지 않는 메서드입니다.아니면 다음과 같이 보일 수도 있습니다:

foo 1, 2, 3

이는 세 개의 매개변수를 사용하는 방법입니다.아니면 다음과 같이 보일 수도 있습니다:

foo(1, 2, 3)

이는 동일한 방법이지만 약간 다른 구문을 사용합니다(c, C++, Java, Javascript, C# 등과 같은 c 모방 언어에 대한 사람들의 경험에 더 친숙함).

따라서 연산자 없이 단순 단어 뒤에 매개변수가 나열되는 것을 보면 메서드 호출이라는 확실한 신호입니다.

이제 코드를 완전히 분해해 보겠습니다.

require 'artoo'

이는 기술적으로 메서드 호출입니다.당신은 전화하고 있습니다 require 메소드 및 리터럴 문자열의 단일 매개변수 전달 'artoo'.아마 아시다시피, require 외부 Ruby 파일을 현재 파일에 로드합니다.

connection :keyboard, adaptor: :keyboard

이것은 일부 메서드 호출입니다. 구문 설탕:

넌 바로 그걸 알아 connection 뒤에 매개변수가 있기 때문에 메소드 호출입니다(예:사이에 연산자가 없습니다 connection 그리고 그 뒤에 오는 내용).그런데 어떤 매개변수가 있나요?

:keyboard:는 상징, 이는 Ruby와 동일합니다. 인턴 문자열.

adaptor: :keyboard해시시.

Ruby에는 두 가지 기본 해시 구문이 있습니다.

{key => value}

어디 key 그리고 value 임의의 객체이거나:

{key: value}

어디 key 순수한 문자 그대로의 기호이며 value 모든 객체입니다.또한 코드를 깨끗하게 유지하기 위해 해시를 마지막 매개변수를 메서드에 추가하려면 { 그리고 } 그것은 분명하기 때문이다.결국에는 "이름이 지정된 매개변수" 스타일의 깔끔한 메소드 호출이 제공됩니다.

do_something_to my_person, kindness: 10, aggressiveness: 2

코드에서:

connection :keyboard, adaptor: :keyboard

다음과 같은 대체 해시 구문(기호 키)이 있습니다. { 그리고 } 중단되었습니다.전체 라인은 다음과 100% 동일합니다:

connection(:keyboard, {:adaptor => :keyboard})

마지막 줄:

device :keyboard, driver: :keyboard, connection: :keyboard

같은 것입니다.다음과 동일:

device(:keyboard, {:driver => :keyboard, :connection => :keyboard})

(익숙해지면) 더 좋아 보입니다.

다른 팁

예제에서 connectiondevice는 메소드입니다.adapter: :keyboarddriver: :keyboard:connection: :keyboard 비트는 해시로 전달되는 매개 변수입니다.연결 () 및 장치 ()로 전달 된 첫 번째 매개 변수는 해시에 전달되지 않습니다.

동일한 코드를 다음과 같이 다시 작성할 수 있습니다.

connection :keyboard, { adaptor => :keyboard }
device :keyboard, { driver => :keyboard, connection => :keyboard }
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top