2014-11-25 3 views
0

저는 Ruby에 대해 머리 글자를 쓰고 기본적인 TCP chatroom을 구현하려고합니다. (http://www.sitepoint.com/ruby-tcp-chat/) 나는 @connections[:server] = @server을 이해하기 위해 고군분투루비 저장 쌍, 배열?

def initialize(port) 
    @server = TCPServer.open("localhost", 8888) 
    @connections = Hash.new 
    @rooms = Hash.new 
    @clients = Hash.new 
    @connections[:server] = @server 
    @connections[:rooms] = @rooms 
    @connections[:clients] = @clients 
    run 
end 

: 온라인보고에서 나는 코드의이 부분을 발견했다.

어떤 사용자가 어떤 방에 있는지 추적해야합니다. 나는 한 쌍의 고객/방을 가질 생각 이었지만 이것에 대해 어떻게해야하는지 확신 할 수 없다. 누구라도 조언을 해줄 수 있습니까?

+1

링크 된 사이트는 매우 완전한 자습서를 갖고있는 것으로 보입니다. 이런 식으로 뛰어 들기 전에 좀 더 기본적인 Ruby를 검토하고 싶을지도 모른다. 귀하의 질문에 대답하기 위해, 그 행은 서버를 연결 해시에 붙이는 것일 뿐이므로 @connections : : server로 액세스 할 수 있습니다 (': server'는''server "'와 비슷한 상수 임에 유의하십시오. 더 효율적) –

답변

1

내가 클라이언트의 해시를 사용합니다 -> 방

+0

흥미 롭습니다. @connections [: clients] [handle] = 클라이언트가 무엇을하고 있는지 알고 있습니까? 그것은 한 쌍의 핸들/클라이언트를 : 클라이언트 해쉬에 넣는가? –

+0

캔트는 코드에서 해시를 말해줍니다. – Dima

1

@connections는 해시이다.

이 줄 @connections[:server] = @server은 해시 의 열쇠 (:server) 값 (@server) 쌍은 다음 @connections은 다음과 같이 보일 수 있습니다 추가 :

:
{:server => @server} 

@connections[:clients][:handle] = client

는 그래서 @connections가 될 중첩 된 해시를 설정하는 것입니다
{ 
    :server => @server, 
    :clients => { :handle => client } 
} 

참고 : 이것은 단지 참고 용입니다. 실제 해시 객체 표현은 다르게 보일 것입니다.