From 797e092d77db1454117c3eecccea133494e9a9f6 Mon Sep 17 00:00:00 2001 From: Newsha Nik Date: Thu, 2 Jul 2020 13:05:36 +0430 Subject: [PATCH 1/2] translated the arrow-functions-basics to farsi --- .../1-rewrite-arrow/solution.md | 3 +- .../1-rewrite-arrow/task.md | 15 ++-- .../17-arrow-functions-basics/article.md | 88 ++++++++++--------- 3 files changed, 55 insertions(+), 51 deletions(-) diff --git a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md index 3ea112473..adc794ae0 100644 --- a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md @@ -1,4 +1,3 @@ - ```js run function ask(question, yes, no) { if (confirm(question)) yes() @@ -14,4 +13,4 @@ ask( ); ``` -Looks short and clean, right? +کوتاه و تمیز است، مگر نه؟ diff --git a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md index 2f44db27e..58afdb651 100644 --- a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md @@ -1,17 +1,20 @@ +# Arrow functionها را بازنویسی کنید -# Rewrite with arrow functions - -Replace Function Expressions with arrow functions in the code below: +در کد زیر function expressionها را با arrow functionها جایگزین کنید: ```js run function ask(question, yes, no) { - if (confirm(question)) yes() + if (confirm(question)) yes(); else no(); } ask( "Do you agree?", - function() { alert("You agreed."); }, - function() { alert("You canceled the execution."); } + function () { + alert("You agreed."); + }, + function () { + alert("You canceled the execution."); + } ); ``` diff --git a/1-js/02-first-steps/17-arrow-functions-basics/article.md b/1-js/02-first-steps/17-arrow-functions-basics/article.md index e0fb5bda5..11b62d97f 100644 --- a/1-js/02-first-steps/17-arrow-functions-basics/article.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/article.md @@ -1,111 +1,113 @@ -# Arrow functions, the basics +# مفاهیم ساده‌ی Arrow functions -There's another very simple and concise syntax for creating functions, that's often better than Function Expressions. +یک راه ساده‌تر و کوتاه‌تر دیگر برای ساختن تابع‌ها وجود دارد‌؛ راهی که معمولا از Function Expressions بهتر است. -It's called "arrow functions", because it looks like this: +به‌خاطر شکلی که دارد، arrow functions نام گرفته است. ```js -let func = (arg1, arg2, ...argN) => expression +let func = (arg1, arg2, ...argN) => expression; ``` -...This creates a function `func` that accepts arguments `arg1..argN`, then evaluates the `expression` on the right side with their use and returns its result. +...این کد یک تابع `func` می‌سازد که دو آرگومان `arg1..argN` می‌پذیرد و با استفاده از این دو آرگومان `expression` سمت راست را محاسبه می‌کند و نتیجه را برمی‌گرداند. -In other words, it's the shorter version of: +به بیانی دیگر، این کد نسخه‌ی کوتاه‌شده کد زیر است: ```js -let func = function(arg1, arg2, ...argN) { +let func = function (arg1, arg2, ...argN) { return expression; }; ``` -Let's see a concrete example: +بیایید مثال دیگری ببینیم: ```js run let sum = (a, b) => a + b; -/* This arrow function is a shorter form of: +/* این arrow function نسخه‌ی کوتاه تابع زیر است: let sum = function(a, b) { return a + b; }; */ -alert( sum(1, 2) ); // 3 +alert(sum(1, 2)); // 3 ``` -As you can, see `(a, b) => a + b` means a function that accepts two arguments named `a` and `b`. Upon the execution, it evaluates the expression `a + b` and returns the result. +همانطور که می‌بینید `(a, b) => a + b` بدین معنی‌ست که این تابع دو آرگومان با نام‌های `a` و `b` می‌پذیرد. و هنگام اجرا شدن، مقدار `a + b` را حساب می‌کند و نتیجه را برمی‌گرداند. -- If we have only one argument, then parentheses around parameters can be omitted, making that even shorter. +- اگر فقط یک آرگومان داشته باشیم می‌توانیم پرانتزهای دور آرگومان را حذف کنیم و کد را از این هم کوتاه‌تر کنیم. - For example: + برای مثال: - ```js run - *!* - let double = n => n * 2; - // roughly the same as: let double = function(n) { return n * 2 } - */!* + ```js run + *!* + let double = n => n * 2; + // معادل است با: let double = function(n) { return n * 2 } + */!* - alert( double(3) ); // 6 - ``` + alert( double(3) ); // 6 + ``` -- If there are no arguments, parentheses will be empty (but they should be present): +- اگر آرگومان ورودی نداریم، پرانتزها خالی می‌مانند (ولی حتما باید حاضر باشند): - ```js run - let sayHi = () => alert("Hello!"); + ```js run + let sayHi = () => alert("Hello!"); - sayHi(); - ``` + sayHi(); + ``` Arrow functions can be used in the same way as Function Expressions. +از Arrow functionها به همان شکل Function Expressionها استفاده می‌شود. -For instance, to dynamically create a function: +برای مثال، برای ساخت یک تابع به‌شکل داینامیک مانند زیر عمل می‌کنیم: ```js run let age = prompt("What is your age?", 18); -let welcome = (age < 18) ? - () => alert('Hello') : - () => alert("Greetings!"); +let welcome = age < 18 ? () => alert("Hello") : () => alert("Greetings!"); welcome(); ``` -Arrow functions may appear unfamiliar and not very readable at first, but that quickly changes as the eyes get used to the structure. +Arrow functionها ممکن است در ابتدا غریبه و ناخوانا به نظر برسند اما وقتی چشمتان به آن عادت می‌کند، همه چیز عوض می‌شود. -They are very convenient for simple one-line actions, when we're just too lazy to write many words. +و برای کدهای یک خطی بسیار مناسب هستند. مخصوصا وقتی خسته‌تر از آن هستیم که کلمات زیادی بنویسیم. -## Multiline arrow functions +## Arrow functionهای چندخطی The examples above took arguments from the left of `=>` and evaluated the right-side expression with them. +مثال‌های بالا از سمت چپ فلش `=>`آرگومان گرفتند و سمت راست را با آن محاسبه کردند. Sometimes we need something a little bit more complex, like multiple expressions or statements. It is also possible, but we should enclose them in curly braces. Then use a normal `return` within them. +گاهی کد پیچیده‌تری داریم که چند expression یا statement دارد. این هم امکان‌پذیر است ولی باید کد را درون کمانک قرار دهیم. و درون کمانک نیز از `return` استفاده کنیم. -Like this: +مانند این: ```js run -let sum = (a, b) => { // the curly brace opens a multiline function +let sum = (a, b) => { // کمانک یک تابع چندخظی را دربرمی‌گیرد let result = a + b; *!* - return result; // if we use curly braces, then we need an explicit "return" + return result; // اگر از کمانک استفاده کنیم باید از return استفاده کنیم */!* }; alert( sum(1, 2) ); // 3 ``` -```smart header="More to come" -Here we praised arrow functions for brevity. But that's not all! +```smart header="باز هم هست" +ما در اینجا از کوتاهی و مختصری arrow functionها گفتیم. ولی فقط این نیست! -Arrow functions have other interesting features. +Arrow functionها ویژگی‌های جالب دیگری هم دارند. -To study them in-depth, we first need to get to know some other aspects of JavaScript, so we'll return to arrow functions later in the chapter . +برای این که عمیق واردش بشویم، نیاز داریم اول بخش‌های دیگری از جاوااسکریپت را بشناسیم. برای همین در فصل دیگری به arrow functionها برمی‌گردیم . For now, we can already use arrow functions for one-line actions and callbacks. +فعلا می‌توانیم از arrow functionها برای اعمال و callbackهای یک خطی استفاده کنیم. ``` -## Summary +## خلاصه -Arrow functions are handy for one-liners. They come in two flavors: +Arrow functionها مناسب کدهای یک خطی هستند. و به دو صورت مختلف می‌توان از آن‌ها استفاده کرد: -1. Without curly braces: `(...args) => expression` -- the right side is an expression: the function evaluates it and returns the result. -2. With curly braces: `(...args) => { body }` -- brackets allow us to write multiple statements inside the function, but we need an explicit `return` to return something. +1. بدون کمانک: `(...args) => expression` -- سمت راست یک expression یا عبارت است: تابع آن را می‌خواند و نتیجه را برمی‌گرداند. +2. با کمانک: `(...args) => { body }` -- کمانک‌ها به ما این امکان را می‌دهند تا چند statement را داخل تابع بنویسیم, اما در این صورت باید حتما از `return` برای بازگرداندن نتیجه استفاده کنیم. From 8c4a4479e0f708529af293dcd5d1158a36f82ea1 Mon Sep 17 00:00:00 2001 From: Newsha Nik Date: Sun, 5 Jul 2020 11:07:17 +0430 Subject: [PATCH 2/2] fixed the RTL issue. All of the sentences start with farsi words now. --- .../1-rewrite-arrow/task.md | 2 +- .../17-arrow-functions-basics/article.md | 16 ++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md index 58afdb651..8a5f3b793 100644 --- a/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md @@ -1,4 +1,4 @@ -# Arrow functionها را بازنویسی کنید +# بازنویسی Arrow Functionها در کد زیر function expressionها را با arrow functionها جایگزین کنید: diff --git a/1-js/02-first-steps/17-arrow-functions-basics/article.md b/1-js/02-first-steps/17-arrow-functions-basics/article.md index 11b62d97f..00d001136 100644 --- a/1-js/02-first-steps/17-arrow-functions-basics/article.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/article.md @@ -56,7 +56,6 @@ alert(sum(1, 2)); // 3 sayHi(); ``` -Arrow functions can be used in the same way as Function Expressions. از Arrow functionها به همان شکل Function Expressionها استفاده می‌شود. برای مثال، برای ساخت یک تابع به‌شکل داینامیک مانند زیر عمل می‌کنیم: @@ -69,17 +68,15 @@ let welcome = age < 18 ? () => alert("Hello") : () => alert("Greetings!"); welcome(); ``` -Arrow functionها ممکن است در ابتدا غریبه و ناخوانا به نظر برسند اما وقتی چشمتان به آن عادت می‌کند، همه چیز عوض می‌شود. +ممکن است در ابتدا غریبه و ناخوانا به نظر برسند اما وقتی چشمتان به آن عادت می‌کند، همه چیز عوض می‌شود. و برای کدهای یک خطی بسیار مناسب هستند. مخصوصا وقتی خسته‌تر از آن هستیم که کلمات زیادی بنویسیم. -## Arrow functionهای چندخطی +## وقتی Arrow Functionها چندخطی می‌شوند -The examples above took arguments from the left of `=>` and evaluated the right-side expression with them. -مثال‌های بالا از سمت چپ فلش `=>`آرگومان گرفتند و سمت راست را با آن محاسبه کردند. +مثال‌های بالا از سمت چپ فلش `<=` آرگومان گرفتند و سمت راست را با آن محاسبه کردند. -Sometimes we need something a little bit more complex, like multiple expressions or statements. It is also possible, but we should enclose them in curly braces. Then use a normal `return` within them. -گاهی کد پیچیده‌تری داریم که چند expression یا statement دارد. این هم امکان‌پذیر است ولی باید کد را درون کمانک قرار دهیم. و درون کمانک نیز از `return` استفاده کنیم. +گاهی کد پیچیده‌تری داریم که چند expression یا statement دارد. در این مواقع باید کد را درون کمانک قرار دهیم. و درون کمانک نیز از `return` استفاده کنیم. مانند این: @@ -97,17 +94,16 @@ alert( sum(1, 2) ); // 3 ```smart header="باز هم هست" ما در اینجا از کوتاهی و مختصری arrow functionها گفتیم. ولی فقط این نیست! -Arrow functionها ویژگی‌های جالب دیگری هم دارند. +این توابع ویژگی‌های جالب دیگری هم دارند. برای این که عمیق واردش بشویم، نیاز داریم اول بخش‌های دیگری از جاوااسکریپت را بشناسیم. برای همین در فصل دیگری به arrow functionها برمی‌گردیم . -For now, we can already use arrow functions for one-line actions and callbacks. فعلا می‌توانیم از arrow functionها برای اعمال و callbackهای یک خطی استفاده کنیم. ``` ## خلاصه -Arrow functionها مناسب کدهای یک خطی هستند. و به دو صورت مختلف می‌توان از آن‌ها استفاده کرد: +توابع Arrow function مناسب کدهای تک‌خطی هستند. و به‌صورت‌های مختلفی می‌توان از آن‌ها استفاده کرد. 1. بدون کمانک: `(...args) => expression` -- سمت راست یک expression یا عبارت است: تابع آن را می‌خواند و نتیجه را برمی‌گرداند. 2. با کمانک: `(...args) => { body }` -- کمانک‌ها به ما این امکان را می‌دهند تا چند statement را داخل تابع بنویسیم, اما در این صورت باید حتما از `return` برای بازگرداندن نتیجه استفاده کنیم.