如何将此示例代码从 Go 转换为 Erlang

我以为我可以用一块石头杀死两只鸟,并通过转换以下示例代码(取自http://blog.smartbear.com/programming/an-introduction-to-the-go-language)自学 Go 和 Erlang -boldly-going-where-no-man-has-ever-gone-before/ ) 从 Go 到 Erlang:


package main


import (

    "fmt"

    "time"

)


type Ball struct{ hits int }


func main() {

    table := make(chan *Ball)

    go player("ping", table)

    go player("pong", table)

    table <- new(Ball) // game on; toss the ball

    time.Sleep(1 * time.Second)

    <-table // game over; grab the ball

}


func player(name string, table chan *Ball) {

    for {

        ball := <-table

        ball.hits++

        fmt.Println(name, ball.hits)

        time.Sleep(100 * time.Millisecond)

        table <- ball

    }

}

然而我失败了。该代码基本上创建了一个共享计数器(球)并在两个 goroutine(玩家)之间来回发送它。到目前为止一切顺利。但是我如何在 Erlang 中做类似的事情呢?我的问题是:


如何在 Erlang 中创建计数器?Erlang 似乎不允许在设置后更改变量的值。

如何在两个 erlang 进程之间共享这样的计数器?


料青山看我应如是
浏览 193回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go