Slide 1

Slide 1 text

CLOSUREิ଍ MOBILE PROGRAMMING OCT, 24TH

Slide 2

Slide 2 text

CLOSUREͱ͸ʁ

Slide 3

Slide 3 text

ςΩετ CLOSUREͱ͸ʁ(͓͞Β͍) ▸ ஋ͱͯ͠ѻ͑Δؔ਺ ▸ ແ໊ؔ਺΍ϥϜμࣜɺؔ਺ΦϒδΣΫτͱݴΘΕΔ͜ͱ΋͋ Γ·͢ ▸ ஋ͱͯ͠ѻ͑ΔͷͰؔ਺ͷҾ਺ʹ౉͢͜ͱ΋Ͱ͖Δ͠ ▸ ໭Γ஋ͱͯ͠ฦ͢͜ͱ΋Ͱ͖Δ

Slide 4

Slide 4 text

ΫϩʔδϟΛѻ͑Δ ͜ͱͰԿ͕خ͍͔͠ʁ

Slide 5

Slide 5 text

ςΩετ ΫϩʔδϟΛѻ͑Δ͜ͱͰԿ͕خ͍͠ͷ͔ʁ ▸ ॲཧΛந৅Խͤ͞Δ͜ͱ͕Ͱ͖Δ ▸ ॲཧΛந৅Խͤ͞Δ͜ͱͰਓؒʹಡΈ΍͍͢ίʔυʹͳΔ ▸ ࣮૷͍ͨ͠ॲཧʹϑΥʔΧε͢Δ͜ͱ͕Ͱ͖Δ

Slide 6

Slide 6 text

Ͳ͏͍͏͜ͱʁ

Slide 7

Slide 7 text

࢛ଇԋࢉͷྫ

Slide 8

Slide 8 text

ςΩετ ࢛ଇԋࢉͷྫ ▸ ྫ͑͹࢛ଇԋࢉͷؔ਺Λ࡞Γ͍ͨͱ͠·͢ ▸ ΋͠ΫϩʔδϟΛ࢖Θͳ͍৔߹͸ ▸ ܭࢉͷͨΊͷ਺஋ܕͷҾ਺͕ೋͭ ▸ ͦΕͱͲͷܭࢉॲཧ(+, *, -, /)Λ࣮ߦ͢Δ͔Λܾఆ͢ΔͨΊͷ จࣈྻͷҾ਺͕ҰͭඞཁʹͳΔͱࢥ͍·͢ ▸ ࣮૷͸࣍ͷΑ͏ʹͳΓ·͢

Slide 9

Slide 9 text

ςΩετ ࢛ଇԋࢉͷؔ਺ͷྫ func calculate(num1: Int, num2: Int, operator: String) -> Int { switch operator { case "+": return num1 + num2 case "-": return num1 - num2 case "*": return num1 + num2 case "/": return num1 / num2 default: return num1 + num2 } } calculate(num1: 10, num2: 20, operator: "ˎ")

Slide 10

Slide 10 text

͜ΕͰ΋࣮૷͸ Ͱ͖͕ͨɾɾɾ

Slide 11

Slide 11 text

ςΩετ ࣮͸৭ʑ໰୊͕ɾɾɾ func calculate(num1: Int, num2: Int, operator: String) -> Int { switch operator { case "+": return num1 + num2 case "-": return num1 - num2 case "*": return num1 + num2 case "/": return num1 / num2 default: return num1 + num2 } } calculate(num1: 10, num2: 20, operator: "ˎ") ௕͍switchΛॻ͔ͳ͍ͱ͍͚ͳ͍(ॲཧͷຊ࣭͡Όͳ͍)

Slide 12

Slide 12 text

ςΩετ ࣮͸৭ʑ໰୊͕ɾɾɾ func calculate(num1: Int, num2: Int, operator: String) -> Int { switch operator { case "+": return num1 + num2 case "-": return num1 - num2 case "*": return num1 + num2 case "/": return num1 / num2 default: return num1 + num2 } } calculate(num1: 10, num2: 20, operator: "ˎ") ௕͍switchΛॻ͔ͳ͍ͱ͍͚ͳ͍(ॲཧͷຊ࣭͡Όͳ͍) ਖ਼͍͠จࣈ͕དྷͳ͔ͬͨ࣌΋૝ఆ͠ͳ͍ͱ͍͚ͳ͍(ॲ ཧͷຊ࣭͡Όry)

Slide 13

Slide 13 text

ςΩετ ࣮͸৭ʑ໰୊͕ɾɾɾ func calculate(num1: Int, num2: Int, operator: String) -> Int { switch operator { case "+": return num1 + num2 case "-": return num1 - num2 case "*": return num1 + num2 case "/": return num1 / num2 default: return num1 + num2 } } calculate(num1: 10, num2: 20, operator: "ˎ") ௕͍switchΛॻ͔ͳ͍ͱ͍͚ͳ͍(ॲཧͷຊ࣭͡Όͳ͍) ਖ਼͍͠จࣈ͕དྷͳ͔ͬͨ࣌΋૝ఆ͠ͳ͍ͱ͍͚ͳ͍(ॲ ཧͷຊ࣭͡Όry) ͋ΕΕʙ?͓͔͍ͧ͠ʙ?

Slide 14

Slide 14 text

ςΩετ ࣮͸৭ʑ໰୊͕ɾɾɾ func calculate(num1: Int, num2: Int, operator: String) -> Int { switch operator { case "+": return num1 + num2 case "-": return num1 - num2 case "*": return num1 + num2 case "/": return num1 / num2 default: return num1 + num2 } } calculate(num1: 10, num2: 20, operator: “ˎ”) ௕͍switchΛॻ͔ͳ͍ͱ͍͚ͳ͍(ॲཧͷຊ࣭͡Όͳ͍) ਖ਼͍͠จࣈ͕དྷͳ͔ͬͨ࣌΋૝ఆ͠ͳ͍ͱ͍͚ͳ͍(ॲ ཧͷຊ࣭͡Όry) ͋ΕΕʙ?͓͔͍ͧ͠ʙ? શ֯จࣈ౉ͯ͠ͳ͍ʁ

Slide 15

Slide 15 text

ςΩετ ࣮͸৭ʑ໰୊͕ɾɾɾ func calculate(num1: Int, num2: Int, operator: String) -> Int { switch operator { case "+": return num1 + num2 case "-": return num1 - num2 case "*": return num1 + num2 case "/": return num1 / num2 default: return num1 + num2 } } calculate(num1: 10, num2: 20, operator: “ˎ”) ௕͍switchΛॻ͔ͳ͍ͱ͍͚ͳ͍(ॲཧͷຊ࣭͡Όͳ͍) ਖ਼͍͠จࣈ͕དྷͳ͔ͬͨ࣌΋૝ఆ͠ͳ͍ͱ͍͚ͳ͍(ॲ ཧͷຊ࣭͡Όry) ͋ΕΕʙ?͓͔͍ͧ͠ʙ? શ֯͡Όͳ͍ʁ

Slide 16

Slide 16 text

ςΩετ ৭ʑͳ໰୊͕ɾɾɾ ▸ ॲཧΛ෼ذͤ͞ΔͨΊʹswitchΛॻ͔ͳ͍ͱ͍͚ͳ͍ ▸ OperatorʹจࣈྻΛ࢖͍ͬͯΔͷͰظ଴͠ͳ͍จࣈ(=ͱ͔)͕͖ͨ৔߹΋૝ఆ͠ͳ͍ ͱ͍͚ͳ͍(default) ▸ operatorͷจࣈྻͱ࣮ࡍͷܭࢉΛ߹Θͤͳ͍ͱ͍͚ͳ͍ ▸ ԋࢉͷछྨ͕૿͑ͨΒcaseΛ૿΍͞ͳ͍ͱ͍͚ͳ͍ ▸ ؔ਺Λݺͼग़͢ͱ͖ʹ΋operatorͷจࣈΛλΠϙ͠ͳ͍Α͏ʹؾΛ͚ͭͳ͍ͱ͍͚ ͳ͍ ▸ ࢛ଇԋࢉͷؔ਺ͳͷͰܭࢉͤ͞ΔॲཧʹϑΥʔΧε͍͕ͨͦ͠ΕҎ֎ʹॻ͔ͳ͍ͱ ͍͚ͳ͍͜ͱɺߟ͑ͳ͍ͱ͍͚ͳ͍͜ͱ͕ଟ͍

Slide 17

Slide 17 text

Ͱ͸΋͠ܭࢉͷॲཧ ΛҾ਺ͱͯ͠౉ͤͨ Βɾɾɾʁ

Slide 18

Slide 18 text

ςΩετ ܭࢉͷॲཧΛҾ਺ͱͯ͠౉ͤͨΒɾɾɾʁ func calculate(num1: Int, num2: Int, calc: (Int, Int) -> Int) -> Int { return calc(number1, number2) } // ଍͠ࢉ calculate(num1: 10, num2: 20) { $0 + $1 } // Ҿ͖ࢉ calculate(num1: 10, num2: 20) { $0 - $1 } // ֻ͚ࢉ calculate(num1: 10, num2: 20) { $0 * $1 } // ׂΓࢉ calculate(num1: 10, num2: 20) { $0 / $1 }

Slide 19

Slide 19 text

ςΩετ ܭࢉͷॲཧΛҾ਺ͱͯ͠౉ͤͨΒɾɾɾʁ func calculate(num1: Int, num2: Int, calc: (Int, Int) -> Int) -> Int { return calc(number1, number2) } // ଍͠ࢉ calculate(num1: 10, num2: 20) { $0 + $1 } // Ҿ͖ࢉ calculate(num1: 10, num2: 20) { $0 - $1 } // ֻ͚ࢉ calculate(num1: 10, num2: 20) { $0 * $1 } // ׂΓࢉ calculate(num1: 10, num2: 20) { $0 / $1 } จࣈͷ୅ΘΓʹܭࢉॲཧͦͷ΋ͷΛ౉͢Α͏ʹมߋ(typoͷ ৺഑͕ͳ͘ͳͬͨ)

Slide 20

Slide 20 text

ςΩετ ܭࢉͷॲཧΛҾ਺ͱͯ͠౉ͤͨΒɾɾɾʁ func calculate(num1: Int, num2: Int, calc: (Int, Int) -> Int) -> Int { return calc(number1, number2) } // ଍͠ࢉ calculate(num1: 10, num2: 20) { $0 + $1 } // Ҿ͖ࢉ calculate(num1: 10, num2: 20) { $0 - $1 } // ֻ͚ࢉ calculate(num1: 10, num2: 20) { $0 * $1 } // ׂΓࢉ calculate(num1: 10, num2: 20) { $0 / $1 } switchͷྶѹ͕ɾɾɾফ͑ͨɾɾɾʁ(ॲཧ͕γϯϓ ϧʹ) จࣈͷ୅ΘΓʹܭࢉॲཧͦͷ΋ͷΛ౉͢Α͏ʹมߋ(typoͷ ৺഑͕ͳ͘ͳͬͨ)

Slide 21

Slide 21 text

ςΩετ ܭࢉͷॲཧΛҾ਺ͱͯ͠౉ͤͨΒɾɾɾʁ func calculate(num1: Int, num2: Int, calc: (Int, Int) -> Int) -> Int { return calc(number1, number2) } // ଍͠ࢉ calculate(num1: 10, num2: 20) { $0 + $1 } // Ҿ͖ࢉ calculate(num1: 10, num2: 20) { $0 - $1 } // ֻ͚ࢉ calculate(num1: 10, num2: 20) { $0 * $1 } // ׂΓࢉ calculate(num1: 10, num2: 20) { $0 / $1 } switchͷྶѹ͕ɾɾɾফ͑ͨɾɾɾʁ(ॲཧ͕γϯϓ ϧʹ) จࣈͷ୅ΘΓʹܭࢉॲཧͦͷ΋ͷΛ౉͢Α͏ʹมߋ(typoͷ ৺഑͕ͳ͘ͳͬͨ) ௚઀ॲཧΛ౉͍ͯ͠ΔͷͰߟ ͑Δ͜ͱ͕ݮΔ

Slide 22

Slide 22 text

ςΩετ ܭࢉͷॲཧΛҾ਺ͱͯ͠౉ͤͨΒɾɾɾʁ func calculate(num1: Int, num2: Int, calc: (Int, Int) -> Int) -> Int { return calc(number1, number2) } // ଍͠ࢉ calculate(num1: 10, num2: 20) { $0 + $1 } // Ҿ͖ࢉ calculate(num1: 10, num2: 20) { $0 - $1 } // ֻ͚ࢉ calculate(num1: 10, num2: 20) { $0 * $1 } // ׂΓࢉ calculate(num1: 10, num2: 20) { $0 / $1 } // ༨Γ calculate(num1: 10, num2: 20) { $0 % $1 } switchͷྶѹ͕ɾɾɾফ͑ͨɾɾɾʁ(ॲཧ͕γϯϓ ϧʹ) จࣈͷ୅ΘΓʹܭࢉॲཧͦͷ΋ͷΛ౉͢Α͏ʹมߋ(typoͷ ৺഑͕ͳ͘ͳͬͨ) ௚઀ॲཧΛ౉͍ͯ͠ΔͷͰߟ ͑Δ͜ͱ͕ݮΔ ௚઀ॲཧΛ౉͍ͯ͠Δͷػೳ௥Ճʹ΋Α ΓॊೈͳରԠ͕Մೳʹ

Slide 23

Slide 23 text

΋͏গ͠ݟͯ Έ·͠ΐ͏

Slide 24

Slide 24 text

BUTTONͷΠϕϯ τϋϯυϥͷྫ

Slide 25

Slide 25 text

ςΩετ ANDROIDͷϘλϯΛ࣮૷͢Δ৔߹ɾɾɾ public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 findViewById(R.id.button) }
 } ·ͣ͸LayoutϑΝΠϧ͔ΒButtonΛऔಘ

Slide 26

Slide 26 text

ςΩετ ANDROIDͷϘλϯΛ࣮૷͢Δ৔߹ɾɾɾ public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 findViewById(R.id.button).setOnClickListener(new OnClickListener() {
 
 });
 }
 } OnClickListenerΫϥεΛ࡞੒ͯ͠ɾɾɾ

Slide 27

Slide 27 text

ςΩετ ANDROIDͷϘλϯΛ࣮૷͢Δ৔߹ɾɾɾ public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 
 }
 });
 }
 } onClickϝιουΛॻ͍ͯɾɾɾ

Slide 28

Slide 28 text

ςΩετ ANDROIDͷϘλϯΛ࣮૷͢Δ৔߹ɾɾɾ public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 Log.d("Sample", "button is tapped!");
 }
 });
 }
 } λοϓ͞Εͨ࣌ͷίʔυΛॻ͘

Slide 29

Slide 29 text

͜ΕͰ΋࣮૷͸ Ͱ͖͕ͨɾɾɾ

Slide 30

Slide 30 text

ςΩετ ΍͸Γ໰୊͕ɾɾɾ public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 Log.d("Sample", "button is tapped!");
 }
 });
 }
 } λοϓ͞Εͨ࣌ͷॲཧΛॻ͖͍͚ͨͩͳͷʹ࣮૷·Ͱ͕ԕ͍

Slide 31

Slide 31 text

ΫϩʔδϟΛ௚ ઀౉ͤΕ͹ɾɾɾ

Slide 32

Slide 32 text

ςΩετ ΫϩʔδϟΛ௚઀౉ͤΕ͹ɾɾɾ public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 findViewById(R.id.button).setOnClickListener {
 Log.d("Sample", "button is tapped!");
 };
 }
 } ຊ౰ʹॻ͖͍ͨॲཧ͚ͩʹϑΥʔΧεͰ͖Δʂ

Slide 33

Slide 33 text

·ͱΊ

Slide 34

Slide 34 text

ςΩετ ·ͱΊ ▸ ΫϩʔδϟΛ௚઀౉͢͜ͱͰίʔυͷྔ͕ݮΔ ▸ ίʔυͷྔ͕ݮΔͷͰಡΈ΍͘͢ͳΔ ▸ ༨ܭͳίʔυΛॻ͔ͳͯ͘ࡁΉͷͰॻ͖͍ͨॲཧʹϑΥʔΧ ε͢Δ͜ͱ͕Ͱ͖Δ ▸ ΍ͬͨͶʂͨ͑ͪΌΜʂ

Slide 35

Slide 35 text

ςΩετ શ෦Ϋϩʔδϟ͞Μͷ͓͔͛