Scala: как запустить актер в массиве? - PullRequest
1 голос
/ 29 августа 2011

Я пытаюсь написать простое клиент-серверное приложение для чата на двух языках - Java и Scala.Java-версия работает, и единственная проблема заключается в ее переводе.В Java у меня есть такой код:

import java.net.*;
import java.io.*;

public class FileServer666 extends Thread{

    static Socket clientSocket = null;
    static ServerSocket  serverSocket= null;    
    static  clientThread t[] = new clientThread[10]; 

    public static void main(String args[]) throws IOException           
    { 
        int port_number =1406;
        try
        {
            serverSocket = new ServerSocket(port_number);
        }catch(IOException e){System.out.println(e);}

        System.out.println("Listening" +port_number);

        while(true)
        {
            try
            {           
                clientSocket=serverSocket.accept();
                System.out.println("Akceptuje połaczenie od: "+clientSocket.getInetAddress());

                for(int i=0; i<=9; i++)
                {               
                    if(t[i]==null)                                  
                    {
                        (t[i] = new clientThread(clientSocket,t)).start();
                        break;
                    }
                }                       
            }catch(IOException e){System.out.println(e);}       
        }
    }       
}

Здесь у меня проблема.Как перевести эту строку в Scala:

(t[i] = new clientThread(clientSocket,t)).start();

Есть ли у вас какие-либо предложения?

Ответы [ 2 ]

3 голосов
/ 29 августа 2011

Если вы придерживаетесь прямого перевода, и ваша проблема в том, что назначение не возвращает значение в scala, тогда просто выполните

t(i) = new ClientThread(clientSocket, t)
t(i).start
0 голосов
/ 29 августа 2011

Просто:

t(i) = ( new ClientActor( clientSocket, t) ).start

где ClientActor ваш актер.

...