Git, lambda ifadelerini veya benzerlerini destekliyor mu?Go, lambda ifadeleri veya benzer bir şey var mı?
Lambda ifadeleri kullanan başka bir dilden (Ruby) kitaplığı taşımak istiyorum. kopyalanıp dikkatle yapıştırılan
Git, lambda ifadelerini veya benzerlerini destekliyor mu?Go, lambda ifadeleri veya benzer bir şey var mı?
Lambda ifadeleri kullanan başka bir dilden (Ruby) kitaplığı taşımak istiyorum. kopyalanıp dikkatle yapıştırılan
package main
import fmt "fmt"
type Stringy func() string
func foo() string{
return "Stringy function"
}
func takesAFunction(foo Stringy){
fmt.Printf("takesAFunction: %v\n", foo())
}
func returnsAFunction()Stringy{
return func()string{
fmt.Printf("Inner stringy function\n");
return "bar" // have to return a string to be stringy
}
}
func main(){
takesAFunction(foo);
var f Stringy = returnsAFunction();
f();
var baz Stringy = func()string{
return "anonymous stringy\n"
};
fmt.Printf(baz());
}
Lambda ifadeleri de işlev değişmezleri denir. Git onları tamamen destekler. örneklerle http://golang.org/ref/spec#Function_literals
bir kod-yürüyüş bakın ve bir açıklama: http://golang.org/doc/codewalk/functions/
Evet bilgisayar programlama olarak
, bir
dil spec bakın anonim işlev veya lambda soyutlama (func tion literal), tanımlayıcıya bağlı olmayan bir işlev tanımıdır ve Go, kapanış oluşturabilen anonim işlevleri olan'u destekler. Anonim işlevler, isimlendirmek zorunda kalmadan satır içi bir işlevi tanımlamak istediğinizde kullanışlıdır. Biz intSeq gövdesinde anonim olarak tanımlayan başka bir işlev, döner intSeqpackage main
import "fmt"
func intSeq() func() int {
i := 0
return func() int {
i += 1
return i
}
}
func main() {
nextInt := intSeq()
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
newInts := intSeq()
fmt.Println(newInts())
}
işlevi. döndürülen işlev, numaralı bir kapanış oluşturmak için I değişkeninin üzerinden kapanır.
Output
$ go run closures.go
1
2
3
1
neden bunu söylediniz? kopyalandı ve dikkatlice yapıştırıldı mı? :) – loyalflow
çünkü kodu kopyaladım ve bunu açıklığa kavuşturmak istedim :) – perreal
Kopyaladığınız koddan daha fazla soruyu görmeyi çok isterim. İlk ve en önemlisi, bir "evet"/"hayır"/"kısmen" vb. Ekleyebilirsiniz. Ardından, kodunuzun gerçekte ne yaptığı açıklayıcıdır. – Kissaki