diff options
-rw-r--r-- | es-es/git-es.html.markdown | 2 | ||||
-rw-r--r-- | racket.html.markdown | 40 | ||||
-rw-r--r-- | zh-cn/go-cn.html.markdown | 16 | ||||
-rw-r--r-- | zh-cn/ruby-cn.html.markdown | 3 |
4 files changed, 52 insertions, 9 deletions
diff --git a/es-es/git-es.html.markdown b/es-es/git-es.html.markdown index 0623b29b..5c9d3378 100644 --- a/es-es/git-es.html.markdown +++ b/es-es/git-es.html.markdown @@ -6,7 +6,7 @@ contributors: translator: - ["Raúl Ascencio", "http://rscnt.github.io"] filename: LearnGit.txt -language: es-es +lang: es-es --- diff --git a/racket.html.markdown b/racket.html.markdown index adacd91d..eddc00bf 100644 --- a/racket.html.markdown +++ b/racket.html.markdown @@ -6,6 +6,7 @@ contributors: - ["th3rac25", "https://github.com/voila"] - ["Eli Barzilay", "https://github.com/elibarzilay"] - ["Gustavo Schmidt", "https://github.com/gustavoschmidt"] + - ["Duong H. Nguyen", "https://github.com/cmpitg"] --- Racket is a general purpose, multi-paradigm programming language in the Lisp/Scheme family. @@ -600,6 +601,45 @@ vec ; => #(1 2 3 4) ;; expected: positive? ;; given: -5 ;; more details.... + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; 11. Input & output +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Racket has this concept of "port", which is very similar to file +;; descriptors in other languages + +;; Open "/tmp/tmp.txt" and write "Hello World" +;; This would trigger an error if the file's already existed +(define out-port (open-output-file "/tmp/tmp.txt")) +(displayln "Hello World" out-port) +(close-output-port out-port) + +;; Append to "/tmp/tmp.txt" +(define out-port (open-output-file "/tmp/tmp.txt" + #:exists 'append)) +(displayln "Hola mundo" out-port) +(close-output-port out-port) + +;; Read from the file again +(define in-port (open-input-file "/tmp/tmp.txt")) +(displayln (read-line in-port)) +; => "Hello World" +(displayln (read-line in-port)) +; => "Hola mundo" +(close-input-port in-port) + +;; Alternatively, with call-with-output-file you don't need to explicitly +;; close the file +(call-with-output-file "/tmp/tmp.txt" + #:exists 'update ; Rewrite the content + (λ (out-port) + (displayln "World Hello!" out-port))) + +;; And call-with-input-file does the same thing for input +(call-with-input-file "/tmp/tmp.txt" + (λ (in-port) + (displayln (read-line in-port)))) ``` ## Further Reading diff --git a/zh-cn/go-cn.html.markdown b/zh-cn/go-cn.html.markdown index 7cc9c171..4a87dc21 100644 --- a/zh-cn/go-cn.html.markdown +++ b/zh-cn/go-cn.html.markdown @@ -5,6 +5,8 @@ filename: learngo-cn.go contributors: - ["Sonia Keys", "https://github.com/soniakeys"] - ["pantaovay", "https://github.com/pantaovay"] + - ["lidashuang", "https://github.com/lidashuang"] + --- 发明Go语言是出于更好地完成工作的需要。Go不是计算机科学的最新发展潮流,但它却提供了解决现实问题的最新最快的方法。 @@ -30,7 +32,7 @@ import ( ) // 函数声明:Main是程序执行的入口。 -// 不管你喜欢还是不喜欢,反正G就用了花括号来包住函数体。 +// 不管你喜欢还是不喜欢,反正Go就用了花括号来包住函数体。 func main() { // 往标准输出打印一行。 // 用包名fmt限制打印函数。 @@ -47,7 +49,7 @@ func beyondHello() { x = 3 // 变量赋值。 // 可以用:=来偷懒,它自动把变量类型、声明和赋值都搞定了。 y := 4 - sum, prod := learnMultiple(x, y) // 多个返回变量的函数 + sum, prod := learnMultiple(x, y) // 返回多个变量的函数 fmt.Println("sum:", sum, "prod:", prod) // 简单输出 learnTypes() // 少于y分钟,学的更多! } @@ -82,7 +84,7 @@ can include line breaks.` // 同样是String类型 var a4 [4] int // 有4个int变量的数组,初始为0 a3 := [...]int{3, 1, 5} // 有3个int变量的数组,同时进行了初始化 - // Slice 有动态大小。Array和Slice各有千秋,但是使用slice的地方更多些。 + // Slice 可以动态的增删。Array和Slice各有千秋,但是使用slice的地方更多些。 s3 := []int{4, 5, 9} // 和a3相比,这里没有省略号 s4 := make([]int, 4) // 分配一个有4个int型变量的slice,全部被初始化为0 @@ -114,7 +116,7 @@ func learnMemory() (p, q *int) { s := make([]int, 20) // 给20个int变量分配一块内存 s[3] = 7 // 赋值 r := -2 // 声明另一个局部变量 - return &s[3], &r // & 取址 + return &s[3], &r // & 取地址 } func expensiveComputation() int { @@ -149,7 +151,7 @@ func learnFlowControl() { // x在这里还是1。为什么? // for 是go里唯一的循环关键字,不过它有很多变种 - for { // 无限循环 + for { // 死循环 break // 骗你的 continue // 不会运行的 } @@ -239,7 +241,7 @@ func learnConcurrency() { go inc(-805, c) // 从channel中独处结果并打印。 // 打印出什么东西是不可预知的。 - fmt.Println(<-c, <-c, <-c) // channel在右边的时候,<-是接收操作。 + fmt.Println(<-c, <-c, <-c) // channel在右边的时候,<-是读操作。 cs := make(chan string) // 操作string的channel cc := make(chan chan string) // 操作channel的channel @@ -255,7 +257,7 @@ func learnConcurrency() { case <-cc: // 空的,还没作好通讯的准备 fmt.Println("didn't happen.") } - // 上面c或者cs的值被取到,其中一个goroutine结束,另外一个保持阻塞。 + // 上面c或者cs的值被取到,其中一个goroutine结束,另外一个一直阻塞。 learnWebProgramming() // Go很适合web编程,我知道你也想学! } diff --git a/zh-cn/ruby-cn.html.markdown b/zh-cn/ruby-cn.html.markdown index 619e6e92..3c47f3f9 100644 --- a/zh-cn/ruby-cn.html.markdown +++ b/zh-cn/ruby-cn.html.markdown @@ -6,6 +6,7 @@ contributors: - ["David Underwood", "http://theflyingdeveloper.com"] - ["Joel Walden", "http://joelwalden.net"] - ["Luke Holder", "http://twitter.com/lukeholder"] + - ["lidashuang", "https://github.com/lidashuang"] translators: - ["Lin Xiangyu", "https://github.com/oa414"] --- @@ -173,7 +174,7 @@ new_hash = { defcon: 3, action: true} new_hash.keys #=> [:defcon, :action] # 小贴士:数组和哈希表都是可枚举的 -# 它们可以共享一些有用的方法,比如each, map, count, 和more +# 它们可以共享一些有用的方法,比如each, map, count 等等 # 控制流 |