見出し画像

ノンプロ研GAS中級講座 第1回 スコープと関数 その4

前回のnote


演習1-09 プライベート関数

function privateFunction_() のように、アンダースコアで終わる関数は、プロジェクト外からは呼び出せない。グローバル領域は範囲がプロジェクト全域に及ぶが、プライベートは逆に範囲をそのプロジェクトに限定できる。

画像1


演習1-10 引数と仮引数

まずはこのコードとその結果をご覧ください。

画像2

ここでは、引数1がx、引数2がyになっている。座席は二個しかない。
6行目で仮引数として、三つ割り当てると、三つ目の座席はないので、最後数字、3は捨てられる。
7行目では、仮引数が一つしかないので、yはundefined となる。

数は合わなくても、動くことは動く。合コンで数が合わなくても実行されている状態である。男子3名、女子2名で合コンが実施された場合、余った男子の気持ちを君は考えたことがあるかい?それぞれペアで会話が盛り上がっているときの所在なさ。いいんだ、君が幸せならそれで...。この合コン概念を提唱した某マスクさん、流石だ。

演習1-11 デフォルト引数

undefined の代わりに、仮引数がないときの規定値を設定できるよ。それがデフォルト引数。相変わらず座席以上の数は捨てられる。

画像3

演習1-12 残余引数

意味と使いどころが良く分からない。
余った引数を配列として受け取る???

画像4

↓かにみそ先生のこちらのコードのほうは、まだ理解はできそう。

画像5


わかるような、わからないような。


演習1-13 可変長引数 ★宿題

任意の数の整数を引数として渡して、その総和を求める関数を作成しましょう。
ちなみに、任意の数で渡せる引数を「可変長引数」といいます。

カヘンチョーインスウ カヘンチョーヒキスウ なんの呪文でしょうか?

ちょっとこの問題、何言ってんのか良く分かんないです。


function sum(...theArgs) {
 return theArgs.reduce((previous, current) => {
   return previous + current;
 });
}
console.log(sum(1, 2, 3));
// expected output: 6
console.log(sum(1, 2, 3, 4));
// expected output: 10こ

これをベースに関数の形にすればいいってこと?

任意の整数ということで、いくつかわかんないので、残余引数構文でなんかうまいことしろってこと???

全然分からないので、皆さんの回答やTA回答をみながら、は~ん?ふえ~?ほえ~?


// 任意の数の整数を引数として渡して、その総和を求める関数を作成しましょう。
// ちなみに、任意の数で渡せる引数を「可変長引数」といいます。

function myIntegerNumbers() {
 console.log(returnSum(1, 2, 3, 4, 5))//任意の数の整数
 console.log(returnSum(1, 2))//任意の数の整数
}

function returnSum(...args) { //任意の数の整数の総和を求める関数

 let sum = 0;

 for (arg of args) {
   sum += arg;
 }
 return sum;

}


動いてるけど全然意味が分からない。

reduceでも書けるみたいだが全然わからない。

頭が悪くてつらい。


で、あとドキュメンテーションコメントというのを書く必要があるらしい。
めんどくせえ~~~。


見よう見まねで書いてみる。

// 任意の数の整数を引数として渡して、その総和を求める関数を作成しましょう。
// ちなみに、任意の数で渡せる引数を「可変長引数」といいます。
function myIntegerNumbers() {
 console.log(returnSum_(1, 2, 3, 4, 5))//任意の数の整数
 console.log(returnSum_(1, 2))//任意の数の整数
}
/**
* 任意の数の整数(可変長引数)を受け取り、その総和を返す関数。
*
* @param  {...number} 任意の数の整数
* @return {number} 総和
* @customfunction
*/
function returnSum_(...args) { //任意の数の整数の総和を求める関数。これ単体は実行する関数ではないので、アンダースコアを付与してPrivate関数とする。
 let sum = 0;
 for (arg of args) {
   sum += arg;
 }
 return sum;
}


良く分からんくて、質問してみた。

画像6


こんなに丁寧にコメントいただけて、泣いちゃう。


つづく。



いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!