]> git.lizzy.rs Git - rust.git/commitdiff
Updating docs with updated closure syntax, `&fn` -> `||`
authorVijay Korapaty <rust@korapaty.com>
Tue, 26 Nov 2013 08:02:39 +0000 (00:02 -0800)
committerVijay Korapaty <rust@korapaty.com>
Tue, 26 Nov 2013 08:35:55 +0000 (00:35 -0800)
doc/po/ja/rust.md.po
doc/po/ja/tutorial.md.po
doc/po/rust.md.pot
doc/po/tutorial.md.pot
doc/rust.md
doc/tutorial.md

index 42237b9d6cca38ade636ad90c3f95f231e2e0349..24f07337df9ffde26cc7b9f6aa07700c79d0fc8c 100644 (file)
@@ -1817,10 +1817,10 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~ {.xfail-test}\n"
-"fn iter<T>(seq: &[T], f: &fn(T)) {\n"
+"fn iter<T>(seq: &[T], f: |T|) {\n"
 "    for elt in seq.iter() { f(elt); }\n"
 "}\n"
-"fn map<T, U>(seq: &[T], f: &fn(T) -> U) -> ~[U] {\n"
+"fn map<T, U>(seq: &[T], f: |T| -> U) -> ~[U] {\n"
 "    let mut acc = ~[];\n"
 "    for elt in seq.iter() { acc.push(f(elt)); }\n"
 "    acc\n"
@@ -2404,7 +2404,7 @@ msgid ""
 "trait Seq<T> {\n"
 "   fn len(&self) -> uint;\n"
 "   fn elt_at(&self, n: uint) -> T;\n"
-"   fn iter(&self, &fn(T));\n"
+"   fn iter(&self, |T|);\n"
 "}\n"
 "~~~~\n"
 msgstr ""
@@ -4243,7 +4243,7 @@ msgid ""
 "[function definitions](#functions) do not.  The exact type of capture "
 "depends on the [function type](#function-types) inferred for the lambda "
 "expression.  In the simplest and least-expensive form (analogous to a "
-"```&fn() { }``` expression), the lambda expression captures its environment "
+"```|| { }``` expression), the lambda expression captures its environment "
 "by reference, effectively borrowing pointers to all outer variables "
 "mentioned inside the function.  Alternately, the compiler may infer that a "
 "lambda expression should copy or move values (depending on their type.)  "
@@ -4262,7 +4262,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"fn ten_times(f: &fn(int)) {\n"
+"fn ten_times(f: |int|) {\n"
 "    let mut i = 0;\n"
 "    while i < 10 {\n"
 "        f(i);\n"
@@ -4455,7 +4455,7 @@ msgstr ""
 
 #. type: Plain text
 #: doc/rust.md:2339
-msgid "~~~~ # fn f(f: &fn(int)) { } # fn g(i: int) { }"
+msgid "~~~~ # fn f(f: |int|) { } # fn g(i: int) { }"
 msgstr ""
 
 #. type: Plain text
@@ -4481,7 +4481,7 @@ msgstr ""
 
 #. type: Plain text
 #: doc/rust.md:2352
-msgid "~~~~ # fn k(x:int, f: &fn(int)) { } # fn l(i: int) { }"
+msgid "~~~~ # fn k(x:int, f: |int|) { } # fn l(i: int) { }"
 msgstr ""
 
 #. type: Plain text
@@ -5483,7 +5483,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~~~~\n"
-"fn map<A: Clone, B: Clone>(f: &fn(A) -> B, xs: &[A]) -> ~[B] {\n"
+"fn map<A: Clone, B: Clone>(f: |A| -> B, xs: &[A]) -> ~[B] {\n"
 "    if xs.len() == 0 {\n"
 "       return ~[];\n"
 "    }\n"
index 2b4e6e2c148cbd373c1e7cf38660834cf4c562d4..1d3fc494efac042d07c5ba2232d1c8ad2d1babfd 100644 (file)
@@ -3340,10 +3340,10 @@ msgstr ""
 
 #. type: Plain text
 #: doc/tutorial.md:1434
-msgid "~~~~ fn call_closure_with_ten(b: &fn(int)) { b(10); }"
+msgid "~~~~ fn call_closure_with_ten(b: |int|) { b(10); }"
 msgstr ""
 "~~~~\n"
-"fn call_closure_with_ten(b: &fn(int)) { b(10); }"
+"fn call_closure_with_ten(b: |int|) { b(10); }"
 
 #. type: Plain text
 #: doc/tutorial.md:1437
@@ -3400,11 +3400,11 @@ msgstr ""
 #: doc/tutorial.md:1459
 msgid ""
 "There are several forms of closure, each with its own role. The most common, "
-"called a _stack closure_, has type `&fn` and can directly access local "
+"called a _stack closure_, has type `||` and can directly access local "
 "variables in the enclosing scope."
 msgstr ""
 "クロージャにはいくつかの形態があり、それぞれに独自の役割があります。最も一般"
-"的なのはスタッククロージャと呼ばれるもので、 `&fn` という型を持ち、外側のロー"
+"的なのはスタッククロージャと呼ばれるもので、 `||` という型を持ち、外側のロー"
 "カル変数に直接アクセスすることができます。"
 
 #. type: Plain text
@@ -3531,27 +3531,27 @@ msgstr "## クロージャの互換性"
 msgid ""
 "Rust closures have a convenient subtyping property: you can pass any kind of "
 "closure (as long as the arguments and return types match) to functions that "
-"expect a `&fn()`. Thus, when writing a higher-order function that only calls "
+"expect a `||`. Thus, when writing a higher-order function that only calls "
 "its function argument, and does nothing else with it, you should almost "
-"always declare the type of that argument as `&fn()`. That way, callers may "
+"always declare the type of that argument as `||`. That way, callers may "
 "pass any kind of closure."
 msgstr ""
 "Rust のクロージャは型の派生 (subtyping) という便利な性質を持っています。この"
-"性質により、`&fn()` 型を期待する関数には (引数と戻り値の型が一致する限り) 任"
+"性質により、`||` 型を期待する関数には (引数と戻り値の型が一致する限り) 任"
 "意の種類のクロージャを渡すことができます。したがって、引数で渡された関数につ"
 "いては呼び出すだけで他に何もしない高階関数を書くときには、ほぼすべてのケース"
-"で引数の型を `&fn` と宣言するべきです。そうすることで、呼び出し元は任意の種類"
+"で引数の型を `||` と宣言するべきです。そうすることで、呼び出し元は任意の種類"
 "のクロージャを渡すことができるよになります。"
 
 #. type: Plain text
 #: doc/tutorial.md:1527
 msgid ""
-"~~~~ fn call_twice(f: &fn()) { f(); f(); } let closure = || { \"I'm a "
+"~~~~ fn call_twice(f: ||) { f(); f(); } let closure = || { \"I'm a "
 "closure, and it doesn't matter what type I am\"; }; fn function() { \"I'm a "
 "normal function\"; } call_twice(closure); call_twice(function); ~~~~"
 msgstr ""
 "~~~~\n"
-"fn call_twice(f: &fn()) { f(); f(); }\n"
+"fn call_twice(f: ||) { f(); f(); }\n"
 "let closure = || { \"I'm a closure, and it doesn't matter what type I am"
 "\"; };\n"
 "fn function() { \"I'm a normal function\"; }\n"
@@ -3598,7 +3598,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"fn each(v: &[int], op: &fn(v: &int)) {\n"
+"fn each(v: &[int], op: |v: &int|) {\n"
 "   let mut n = 0;\n"
 "   while n < v.len() {\n"
 "       op(&v[n]);\n"
@@ -3622,7 +3622,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"# fn each(v: &[int], op: &fn(v: &int)) { }\n"
+"# fn each(v: &[int], op: |v: &int|) { }\n"
 "# fn do_some_work(i: &int) { }\n"
 "each([1, 2, 3], |n| {\n"
 "    do_some_work(n);\n"
@@ -3644,7 +3644,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"# fn each(v: &[int], op: &fn(v: &int)) { }\n"
+"# fn each(v: &[int], op: |v: &int|) { }\n"
 "# fn do_some_work(i: &int) { }\n"
 "do each([1, 2, 3]) |n| {\n"
 "    do_some_work(n);\n"
@@ -4011,7 +4011,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"fn map<T, U>(vector: &[T], function: &fn(v: &T) -> U) -> ~[U] {\n"
+"fn map<T, U>(vector: &[T], function: |v: &T| -> U) -> ~[U] {\n"
 "    let mut accumulator = ~[];\n"
 "    for element in vector.iter() {\n"
 "        accumulator.push(function(element));\n"
index 9acefdf82156809bd94c102c56075052d03f8eb9..80116dad4d33c0e737ccbd9c6c8aab948ffe014f 100644 (file)
@@ -1817,10 +1817,10 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~ {.xfail-test}\n"
-"fn iter<T>(seq: &[T], f: &fn(T)) {\n"
+"fn iter<T>(seq: &[T], f: |T|) {\n"
 "    for elt in seq.iter() { f(elt); }\n"
 "}\n"
-"fn map<T, U>(seq: &[T], f: &fn(T) -> U) -> ~[U] {\n"
+"fn map<T, U>(seq: &[T], f: |T| -> U) -> ~[U] {\n"
 "    let mut acc = ~[];\n"
 "    for elt in seq.iter() { acc.push(f(elt)); }\n"
 "    acc\n"
@@ -2404,7 +2404,7 @@ msgid ""
 "trait Seq<T> {\n"
 "   fn len(&self) -> uint;\n"
 "   fn elt_at(&self, n: uint) -> T;\n"
-"   fn iter(&self, &fn(T));\n"
+"   fn iter(&self, |T|);\n"
 "}\n"
 "~~~~\n"
 msgstr ""
@@ -4230,7 +4230,7 @@ msgid ""
 "[function definitions](#functions) do not.  The exact type of capture "
 "depends on the [function type](#function-types) inferred for the lambda "
 "expression.  In the simplest and least-expensive form (analogous to a "
-"```&fn() { }``` expression), the lambda expression captures its environment "
+"```|| { }``` expression), the lambda expression captures its environment "
 "by reference, effectively borrowing pointers to all outer variables "
 "mentioned inside the function.  Alternately, the compiler may infer that a "
 "lambda expression should copy or move values (depending on their type.)  "
@@ -4249,7 +4249,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"fn ten_times(f: &fn(int)) {\n"
+"fn ten_times(f: |int|) {\n"
 "    let mut i = 0;\n"
 "    while i < 10 {\n"
 "        f(i);\n"
@@ -4442,7 +4442,7 @@ msgstr ""
 
 #. type: Plain text
 #: doc/rust.md:2339
-msgid "~~~~ # fn f(f: &fn(int)) { } # fn g(i: int) { }"
+msgid "~~~~ # fn f(f: |int|) { } # fn g(i: int) { }"
 msgstr ""
 
 #. type: Plain text
@@ -4468,7 +4468,7 @@ msgstr ""
 
 #. type: Plain text
 #: doc/rust.md:2352
-msgid "~~~~ # fn k(x:int, f: &fn(int)) { } # fn l(i: int) { }"
+msgid "~~~~ # fn k(x:int, f: |int|) { } # fn l(i: int) { }"
 msgstr ""
 
 #. type: Plain text
@@ -5470,7 +5470,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~~~~\n"
-"fn map<A: Clone, B: Clone>(f: &fn(A) -> B, xs: &[A]) -> ~[B] {\n"
+"fn map<A: Clone, B: Clone>(f: |A| -> B, xs: &[A]) -> ~[B] {\n"
 "    if xs.len() == 0 {\n"
 "       return ~[];\n"
 "    }\n"
index 86937652da93b9de24feeb4fd3c83263c1210d21..4573c0904c85dace3abb1e1d0af8f4ad2bea8e39 100644 (file)
@@ -2558,7 +2558,7 @@ msgstr ""
 
 #. type: Plain text
 #: doc/tutorial.md:1434
-msgid "~~~~ fn call_closure_with_ten(b: &fn(int)) { b(10); }"
+msgid "~~~~ fn call_closure_with_ten(b: |int|) { b(10); }"
 msgstr ""
 
 #. type: Plain text
@@ -2601,7 +2601,7 @@ msgstr ""
 #: doc/tutorial.md:1459
 msgid ""
 "There are several forms of closure, each with its own role. The most common, "
-"called a _stack closure_, has type `&fn` and can directly access local "
+"called a _stack closure_, has type `||` and can directly access local "
 "variables in the enclosing scope."
 msgstr ""
 
@@ -2700,16 +2700,16 @@ msgstr ""
 msgid ""
 "Rust closures have a convenient subtyping property: you can pass any kind of "
 "closure (as long as the arguments and return types match) to functions that "
-"expect a `&fn()`. Thus, when writing a higher-order function that only calls "
+"expect a `||`. Thus, when writing a higher-order function that only calls "
 "its function argument, and does nothing else with it, you should almost "
-"always declare the type of that argument as `&fn()`. That way, callers may "
+"always declare the type of that argument as `||`. That way, callers may "
 "pass any kind of closure."
 msgstr ""
 
 #. type: Plain text
 #: doc/tutorial.md:1527
 msgid ""
-"~~~~ fn call_twice(f: &fn()) { f(); f(); } let closure = || { \"I'm a "
+"~~~~ fn call_twice(f: ||) { f(); f(); } let closure = || { \"I'm a "
 "closure, and it doesn't matter what type I am\"; }; fn function() { \"I'm a "
 "normal function\"; } call_twice(closure); call_twice(function); ~~~~"
 msgstr ""
@@ -2746,7 +2746,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"fn each(v: &[int], op: &fn(v: &int)) {\n"
+"fn each(v: &[int], op: |v: &int|) {\n"
 "   let mut n = 0;\n"
 "   while n < v.len() {\n"
 "       op(&v[n]);\n"
@@ -2768,7 +2768,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"# fn each(v: &[int], op: &fn(v: &int)) { }\n"
+"# fn each(v: &[int], op: |v: &int|) { }\n"
 "# fn do_some_work(i: &int) { }\n"
 "each([1, 2, 3], |n| {\n"
 "    do_some_work(n);\n"
@@ -2788,7 +2788,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"# fn each(v: &[int], op: &fn(v: &int)) { }\n"
+"# fn each(v: &[int], op: |v: &int|) { }\n"
 "# fn do_some_work(i: &int) { }\n"
 "do each([1, 2, 3]) |n| {\n"
 "    do_some_work(n);\n"
@@ -3080,7 +3080,7 @@ msgstr ""
 #, no-wrap
 msgid ""
 "~~~~\n"
-"fn map<T, U>(vector: &[T], function: &fn(v: &T) -> U) -> ~[U] {\n"
+"fn map<T, U>(vector: &[T], function: |v: &T| -> U) -> ~[U] {\n"
 "    let mut accumulator = ~[];\n"
 "    for element in vector.iter() {\n"
 "        accumulator.push(function(element));\n"
index 2eb5ee7dbc999d59eab65dbc74125e92ea1bd5bc..fe8d0a834e3e416d1d652a9f689617aad173a8ce 100644 (file)
@@ -950,10 +950,10 @@ declared, in an angle-bracket-enclosed, comma-separated list following
 the function name.
 
 ~~~~ {.xfail-test}
-fn iter<T>(seq: &[T], f: &fn(T)) {
+fn iter<T>(seq: &[T], f: |T|) {
     for elt in seq.iter() { f(elt); }
 }
-fn map<T, U>(seq: &[T], f: &fn(T) -> U) -> ~[U] {
+fn map<T, U>(seq: &[T], f: |T| -> U) -> ~[U] {
     let mut acc = ~[];
     for elt in seq.iter() { acc.push(f(elt)); }
     acc
@@ -1314,7 +1314,7 @@ These appear after the trait name, using the same syntax used in [generic functi
 trait Seq<T> {
    fn len(&self) -> uint;
    fn elt_at(&self, n: uint) -> T;
-   fn iter(&self, &fn(T));
+   fn iter(&self, |T|);
 }
 ~~~~
 
@@ -2607,7 +2607,7 @@ as an abbreviation for defining and capturing a separate function.
 Significantly, lambda expressions _capture their environment_,
 which regular [function definitions](#functions) do not.
 The exact type of capture depends on the [function type](#function-types) inferred for the lambda expression.
-In the simplest and least-expensive form (analogous to a ```&fn() { }``` expression),
+In the simplest and least-expensive form (analogous to a ```|| { }``` expression),
 the lambda expression captures its environment by reference,
 effectively borrowing pointers to all outer variables mentioned inside the function.
 Alternately, the compiler may infer that a lambda expression should copy or move values (depending on their type.)
@@ -2617,7 +2617,7 @@ In this example, we define a function `ten_times` that takes a higher-order func
 and call it with a lambda expression as an argument.
 
 ~~~~
-fn ten_times(f: &fn(int)) {
+fn ten_times(f: |int|) {
     let mut i = 0;
     while i < 10 {
         f(i);
@@ -2726,7 +2726,7 @@ If the `expr` is a [field expression](#field-expressions), it is parsed as thoug
 In this example, both calls to `f` are equivalent:
 
 ~~~~
-# fn f(f: &fn(int)) { }
+# fn f(f: |int|) { }
 # fn g(i: int) { }
 
 f(|j| g(j));
@@ -2739,7 +2739,7 @@ do f |j| {
 In this example, both calls to the (binary) function `k` are equivalent:
 
 ~~~~
-# fn k(x:int, f: &fn(int)) { }
+# fn k(x:int, f: |int|) { }
 # fn l(i: int) { }
 
 k(3, |j| l(j));
@@ -3241,7 +3241,7 @@ and the cast expression in `main`.
 Within the body of an item that has type parameter declarations, the names of its type parameters are types:
 
 ~~~~
-fn map<A: Clone, B: Clone>(f: &fn(A) -> B, xs: &[A]) -> ~[B] {
+fn map<A: Clone, B: Clone>(f: |A| -> B, xs: &[A]) -> ~[B] {
     if xs.len() == 0 {
        return ~[];
     }
index 5d64dd14c772c913f0407b813120c893af1d36a5..4e6fd9e18d257d70a3f1754248a8f7ccc80dd719 100644 (file)
@@ -1366,7 +1366,7 @@ Rust also supports _closures_, functions that can access variables in
 the enclosing scope.
 
 ~~~~
-fn call_closure_with_ten(b: &fn(int)) { b(10); }
+fn call_closure_with_ten(b: |int|) { b(10); }
 
 let captured_var = 20;
 let closure = |arg| println!("captured_var={}, arg={}", captured_var, arg);
@@ -1390,7 +1390,7 @@ let square = |x: int| -> uint { (x * x) as uint };
 ~~~~
 
 There are several forms of closure, each with its own role. The most
-common, called a _stack closure_, has type `&fn` and can directly
+common, called a _stack closure_, has type `||` and can directly
 access local variables in the enclosing scope.
 
 ~~~~
@@ -1420,13 +1420,13 @@ for spawning [tasks][tasks].
 
 Rust closures have a convenient subtyping property: you can pass any kind of
 closure (as long as the arguments and return types match) to functions
-that expect a `&fn()`. Thus, when writing a higher-order function that
+that expect a `||`. Thus, when writing a higher-order function that
 only calls its function argument, and does nothing else with it, you
-should almost always declare the type of that argument as `&fn()`. That way,
+should almost always declare the type of that argument as `||`. That way,
 callers may pass any kind of closure.
 
 ~~~~
-fn call_twice(f: &fn()) { f(); f(); }
+fn call_twice(f: ||) { f(); f(); }
 let closure = || { "I'm a closure, and it doesn't matter what type I am"; };
 fn function() { "I'm a normal function"; }
 call_twice(closure);
@@ -1446,7 +1446,7 @@ Consider this function that iterates over a vector of
 integers, passing in a pointer to each integer in the vector:
 
 ~~~~
-fn each(v: &[int], op: &fn(v: &int)) {
+fn each(v: &[int], op: |v: &int|) {
    let mut n = 0;
    while n < v.len() {
        op(&v[n]);
@@ -1460,7 +1460,7 @@ argument, we can write it in a way that has a pleasant, block-like
 structure.
 
 ~~~~
-# fn each(v: &[int], op: &fn(v: &int)) { }
+# fn each(v: &[int], op: |v: &int|) { }
 # fn do_some_work(i: &int) { }
 each([1, 2, 3], |n| {
     do_some_work(n);
@@ -1471,7 +1471,7 @@ This is such a useful pattern that Rust has a special form of function
 call that can be written more like a built-in control structure:
 
 ~~~~
-# fn each(v: &[int], op: &fn(v: &int)) { }
+# fn each(v: &[int], op: |v: &int|) { }
 # fn do_some_work(i: &int) { }
 do each([1, 2, 3]) |n| {
     do_some_work(n);
@@ -1650,7 +1650,7 @@ vector consisting of the result of applying `function` to each element
 of `vector`:
 
 ~~~~
-fn map<T, U>(vector: &[T], function: &fn(v: &T) -> U) -> ~[U] {
+fn map<T, U>(vector: &[T], function: |v: &T| -> U) -> ~[U] {
     let mut accumulator = ~[];
     for element in vector.iter() {
         accumulator.push(function(element));