﻿1
00:00:04,780 --> 00:00:05,920
‫Hallo en welkom.

2
00:00:05,920 --> 00:00:11,800
‫In deze lezing gaan we leren hoe we outputs uit functies in C++ kunnen halen.

3
00:00:12,130 --> 00:00:18,940
‫En we gaan dit gebruiken om onze code enorm te vereenvoudigen en om een deel van die pseudocode die we hebben geschreven

4
00:00:18,940 --> 00:00:19,750
‫te implementeren.

5
00:00:19,780 --> 00:00:20,560
‫Laten we erin duiken.

6
00:00:21,070 --> 00:00:26,290
‫Dus voordat we de geretourneerde waarden van functies proberen te begrijpen, laten we een korte omweg maken en het begrijpen.

7
00:00:26,290 --> 00:00:29,110
‫Twee concepten voegen nog twee concepten toe aan onze kolossale.

8
00:00:29,650 --> 00:00:32,080
‫Dus de eerste is de uitdrukking.

9
00:00:32,080 --> 00:00:36,880
‫Een expressie is een codefragment dat een waarde produceert.

10
00:00:37,120 --> 00:00:42,940
‫En er is de verklaring die een codefragment is dat een actie is die moet worden uitgevoerd.

11
00:00:43,660 --> 00:00:50,980
‫Nu hebben deze twee eigenlijk een relatie in die zin dat een expressie bijna altijd een statement is, in die zin dat

12
00:00:51,130 --> 00:00:56,830
‫om de waarde van een codefragment te berekenen, het een actie moet zijn die moet worden uitgevoerd.

13
00:00:57,250 --> 00:01:00,970
‫Maar andersom hoeft dat niet per se ook zo te zijn.

14
00:01:00,970 --> 00:01:04,510
‫Een verklaring geeft je niet altijd een waarde.

15
00:01:04,990 --> 00:01:09,850
‫Laten we dus eens kijken naar enkele voorbeelden van uitdrukkingen en enkele dingen die niet uit de code komen die we

16
00:01:09,850 --> 00:01:10,720
‫al hebben geschreven.

17
00:01:11,260 --> 00:01:20,350
‫Dus als we mijn vector in C++ typen, is dit een uitdrukking omdat deze de waarde heeft van wat er ook is opgeslagen

18
00:01:20,350 --> 00:01:22,300
‫in de mijn vectorvariabele.

19
00:01:22,570 --> 00:01:24,700
‫Hetzelfde geldt voor de lokale vector.

20
00:01:24,720 --> 00:01:32,500
‫Als je een lokale vector plus punt z hebt, is dat zelf een uitdrukking en een lokale vector punt z

21
00:01:32,500 --> 00:01:33,670
‫plus 100.

22
00:01:33,940 --> 00:01:40,570
‫Dat is zelf ook een uitdrukking, omdat de lokale vectorpunt z je de waarde binnen het Z-lid

23
00:01:40,870 --> 00:01:41,410
‫gaf.

24
00:01:41,710 --> 00:01:46,900
‫En als je 100 optelt, krijg je een nieuwe waarde die de toevoeging van 100 heeft.

25
00:01:46,900 --> 00:01:48,430
‫Dit zijn dus allemaal uitdrukkingen.

26
00:01:49,030 --> 00:01:55,330
‫Iets dat echter geen uitdrukking is, is wanneer we onze lokale vector verklaarden, toen we vector zeiden, lokale vector gelijk is aan

27
00:01:55,330 --> 00:01:58,810
‫mijn vector en een puntkomma aan het einde van de regel zetten.

28
00:01:58,810 --> 00:02:00,970
‫We kunnen dat niet gebruiken om een waarde te krijgen.

29
00:02:00,970 --> 00:02:02,530
‫Er is geen waarde daar.

30
00:02:02,530 --> 00:02:06,160
‫Het vertelt C++ gewoon dat hier een actie is die u moet uitvoeren.

31
00:02:06,430 --> 00:02:09,100
‫Ik wil dat je een nieuwe lokale vector maakt.

32
00:02:09,460 --> 00:02:11,740
‫Dat is dus geen uitdrukking.

33
00:02:12,370 --> 00:02:16,960
‫Iets dat echter een uitdrukking is, is de locatie van de acteur.

34
00:02:16,960 --> 00:02:20,920
‫Het is een functie die we aanroepen omdat er haakjes aan het einde staan.

35
00:02:20,920 --> 00:02:22,660
‫We hebben hier eigenlijk geen argumenten.

36
00:02:22,660 --> 00:02:26,230
‫Dit is een lege lijst met argumenten, maar het roept iets op.

37
00:02:26,230 --> 00:02:34,720
‫En omdat deze functie een geretourneerde waarde heeft, is het eigenlijke stuk code hier een uitdrukking die de waarde aanneemt van wat

38
00:02:34,720 --> 00:02:37,750
‫er ook uit de functie wordt geretourneerd.

39
00:02:37,750 --> 00:02:44,230
‫En dit is in wezen hetzelfde als de uitvoerpennen die we eerder in een blauwdruk hebben gezien.

40
00:02:44,260 --> 00:02:50,770
‫Behalve in tegenstelling tot blauwdrukken, kunt u slechts één uitvoerwaarde van een functie hebben.

41
00:02:50,770 --> 00:02:52,360
‫Er is slechts één retourwaarde.

42
00:02:52,750 --> 00:02:59,590
‫Dus dat is wat we hier kunnen gebruiken, waar we onze pseudocode hebben geschreven die zegt dat we de huidige locatie moeten krijgen.

43
00:02:59,890 --> 00:03:02,410
‫Daar gaan we dat doen.

44
00:03:02,410 --> 00:03:08,380
‫We gaan de locatie ophalen met behulp van onze toegangslocatie.

45
00:03:08,380 --> 00:03:11,050
‫Laten we hier dus een nieuwe lokale variabele maken.

46
00:03:11,470 --> 00:03:14,560
‫We krijgen een nieuwe lokale variabele genaamd F van het type effect.

47
00:03:14,560 --> 00:03:21,370
‫Het moet een vector van het type S zijn, want dat is het type dat wordt geretourneerd door

48
00:03:21,370 --> 00:03:31,900
‫get op een locatie en we gaan deze huidige locatie noemen en we stellen dat gelijk aan het resultaat van de expressie, krijgen actorlocatie en vervolgens worden haakjes

49
00:03:32,020 --> 00:03:37,300
‫ingesteld van overeenkomende haakjes en vervolgens een puntkomma om de regel te beëindigen.

50
00:03:37,690 --> 00:03:44,050
‫Dus als we deze regel een beetje ontleden, kunnen we zien dat dit stukje hier, de locatie van de act en de

51
00:03:44,050 --> 00:03:49,780
‫haakjes de uitdrukking is dat het ons de waarde geeft, wat de huidige locatie van de acteur is.

52
00:03:50,380 --> 00:03:56,860
‫Dan doen we een opdracht naar de huidige locatie, die hier ook wordt aangegeven.

53
00:03:57,160 --> 00:04:00,520
‫Dus op deze regel is deze hele regel geen uitdrukking.

54
00:04:00,520 --> 00:04:02,860
‫Het heeft geen waarde, het is een statement.

55
00:04:03,280 --> 00:04:09,670
‫En meestal kun je een statement vertellen omdat het in C++ eindigt op een puntkomma.

56
00:04:09,820 --> 00:04:16,750
‫Oké, dus dit stelt ons in wezen in staat om de my-vector en lokale vectoren die we

57
00:04:16,750 --> 00:04:23,590
‫eerder gebruikten af te schaffen, omdat we gewoon onze lokale variabele hier zouden moeten kunnen updaten,

58
00:04:23,590 --> 00:04:29,200
‫deze huidige locatie die we hebben van de locatie van onze acteur.

59
00:04:29,620 --> 00:04:34,300
‫Dus wat we gaan doen is verderop hier, we hebben een opmerking die zegt: stel de locatie in.

60
00:04:34,300 --> 00:04:45,220
‫Dus na die commentaarregel ga ik een acteurslocatie instellen met behulp van de uitdrukking huidige locatie, die alleen die variabele waarde gebruikt en dan een puntkomma aan het

61
00:04:45,430 --> 00:04:50,200
‫einde van de regel plaatsen om te zeggen dat dit hele ding

62
00:04:50,200 --> 00:04:51,430
‫een verklaring is.

63
00:04:51,430 --> 00:04:58,960
‫We willen dat het deze actieset op een locatie uitvoert en merk op dat ik, terwijl mijn opmerkingen zijn ingesprongen, heb

64
00:04:58,960 --> 00:05:04,060
‫besloten om de code niet te laten inspringen, omdat we dat meestal willen.

65
00:05:04,600 --> 00:05:08,890
‫Codes moeten op één inspringingsniveau binnen de functie staan.

66
00:05:09,760 --> 00:05:15,430
‫Wat ik nu kan doen, is dat ik alle code kan verwijderen die we eerder hadden, alles met lokale vector, mijn vector

67
00:05:15,430 --> 00:05:19,420
‫ingesteld op een locatie met behulp van de lokale vector, ik kan dat allemaal verwijderen.

68
00:05:19,780 --> 00:05:23,530
‫Zodat alles wat we nu hebben de dingen rond onze opmerkingen zijn.

69
00:05:24,100 --> 00:05:27,060
‫En ik ga ook naar het header-bestand en maak de dingen hier een beetje op.

70
00:05:27,070 --> 00:05:28,660
‫We hebben de mijn vector niet meer nodig.

71
00:05:28,660 --> 00:05:31,390
‫We hebben de my ex u-eigendommen niet meer nodig.

72
00:05:31,390 --> 00:05:34,270
‫Deze ga ik dus ook verwijderen.

73
00:05:34,510 --> 00:05:39,930
‫Het is duidelijk dat het bewegende platform CP niet echt veel doet, omdat we de huidige acteurslocatie

74
00:05:39,940 --> 00:05:44,560
‫krijgen, dan stellen we deze opnieuw in, wat in feite geen effect heeft.

75
00:05:44,680 --> 00:05:52,630
‫Dus ik zou graag willen dat je de huidige locatie van het bewegende platform bijwerkt in die vinkfunctie.

76
00:05:53,110 --> 00:05:56,470
‫Gebruik dus de X- of Y-leden zoals u wilt.

77
00:05:56,470 --> 00:05:57,730
‫Wel, X gaat vooruit.

78
00:05:57,730 --> 00:06:05,170
‫Y zal je naar rechts verplaatsen, dan kun je er iets aan toevoegen en weer toewijzen aan het lid, zoals we eerder hebben gedaan,

79
00:06:05,170 --> 00:06:08,500
‫om de locatie van onze bewegende platformen bij te werken.

80
00:06:08,950 --> 00:06:15,880
‫Dus voeg een of twee toe, afhankelijk van hoe snel je het platform wilt laten bewegen en verplaats het platform dan

81
00:06:15,880 --> 00:06:20,830
‫naar de startlocatie, want nu hebben we die lidvariabele niet om het de startlocatie

82
00:06:20,830 --> 00:06:23,770
‫te vertellen, we gebruiken eigenlijk de huidige locatie.

83
00:06:23,980 --> 00:06:28,690
‫Dus waar je dat platform ook plaatst, daar begint het platform.

84
00:06:29,290 --> 00:06:35,140
‫En dan wil ik dat je je code compileert en test en kijkt of het beweegt, zoals je zou verwachten.

85
00:06:35,380 --> 00:06:36,970
‫Pauzeer de video en probeer het.

86
00:06:40,000 --> 00:06:40,320
‫Oké.

87
00:06:40,330 --> 00:06:41,020
‫Welkom terug.

88
00:06:41,350 --> 00:06:47,110
‫Dus we gaan deze regel code net onder de opmerking plaatsen die erover gaat, vector

89
00:06:47,200 --> 00:06:48,970
‫toevoegen aan die locatie.

90
00:06:49,630 --> 00:06:55,000
‫En de reden dat we het hier plaatsen is vanwege de volgorde waarin we de huidige locatie willen

91
00:06:55,000 --> 00:06:56,790
‫ophalen, bijwerken en vervolgens instellen.

92
00:06:56,800 --> 00:06:59,530
‫We willen niet dat daar iets misgaat.

93
00:07:00,100 --> 00:07:04,750
‫Als we het zouden updaten voordat we de variabele maakten, nou, die variabele zou niet bestaan.

94
00:07:04,750 --> 00:07:06,250
‫Onthoud dat het een lokale variabele is.

95
00:07:06,550 --> 00:07:10,870
‫Het bestaat pas als we het binnen deze specifieke aanroep van de functie hebben gemaakt.

96
00:07:11,260 --> 00:07:16,690
‫En als we het hadden gedaan nadat we weer op een locatie waren ingesteld, zou die wijziging gewoon worden

97
00:07:16,690 --> 00:07:19,960
‫weggegooid als we bij de afsluitende Brice in de functie kwamen.

98
00:07:20,440 --> 00:07:29,200
‫Dus we gaan de huidige locatie punt x instellen, ik gebruik gelijk aan de huidige locatie, punt x plus één en

99
00:07:29,410 --> 00:07:33,940
‫plaats dan een puntkomma aan het einde van de regel.

100
00:07:34,270 --> 00:07:40,030
‫En we gaan terug naar Unreal en we gaan op de compileerknop drukken.

101
00:07:40,210 --> 00:07:45,580
‫En zoals ik al zei, we moeten dit bewegende platform nu naar zijn startlocatie verplaatsen.

102
00:07:45,590 --> 00:07:51,430
‫Dus ik ga op een personage van een derde persoon klikken en ik ga zijn locatie kopiëren door met de rechtermuisknop op de locatie te klikken, op

103
00:07:51,430 --> 00:07:56,020
‫kopiëren te drukken, dan naar ons bewegende platform te gaan, met de rechtermuisknop op de locatie te klikken en op

104
00:07:56,020 --> 00:07:56,740
‫plakken te drukken.

105
00:07:56,740 --> 00:08:01,270
‫Dus dat plaatst het platform precies in onze speler, wat eigenlijk niet is wat we willen.

106
00:08:01,630 --> 00:08:09,190
‫Dus ik ga het zo iets naar rechts van de speler verplaatsen en ik kan zien of het op de juiste hoogte

107
00:08:09,190 --> 00:08:09,760
‫is.

108
00:08:09,760 --> 00:08:15,370
‫Ik denk dat ik het een beetje lager zal maken, wat een van de voordelen is van het gebruik van de huidige locatie

109
00:08:15,370 --> 00:08:19,900
‫in plaats van een locatievariabele, is dat ik echt kan zien waar dit platform in de wereld zal

110
00:08:19,900 --> 00:08:20,350
‫zijn.

111
00:08:20,890 --> 00:08:26,860
‫Dus als ik nu doorga en op play druk, dan kun je zien dat het platform het mooi in

112
00:08:26,860 --> 00:08:27,940
‫de X-richting beweegt.

113
00:08:27,970 --> 00:08:31,440
‫Ik kan er nog steeds op springen en mee bewogen worden.

114
00:08:31,450 --> 00:08:32,260
‫Goed spul.

115
00:08:32,560 --> 00:08:36,310
‫Nu hebben we geleerd hoe retourwaarden werken uit functies.

116
00:08:36,520 --> 00:08:42,880
‫We beginnen echt veel van de concepten uit blauwdrukken in de C++-wereld te begrijpen.

117
00:08:43,210 --> 00:08:44,650
‫Ik zie je in de volgende lezing.

