14.9 Sottofunzioni e Funzioni
RunScript è la funzione base che viene utilizzata da tutti i componenti. Questo è ciò che si vedrà aprendo un componente script di default in Grasshopper:
Sub RunScript(ByVal x As Object, ByVal y As Object) &#x2018;&#x2019;&#x2019;<il tuo codice&#x2026;>
End Sub
Sub&#x2026; End Sub: Sono parole chiave che includono blocchi di codice della funzione &#x201C;RunScript&#x201D;: &#xE8; il nome della sottofunzione &#x201C;(&#x2026;)&#x201D;: Le parentesi dopo il nome della Sottofunzione includono i parametri di input &#x201C;ByVal x As Object,&#x2026;&#x201D;: Sono i parametri di input
Ogni parametro di input necessita di essere definito nel seguente modo:
&#x2022; ByRef o ByVal: Specifica se un parametro &#xE8; definito per valore o per riferimento. &#x2022; Name: nome del parametro &#x2022; Tipo di parametro, preceduto da &#x201C;As&#x201D; come parola chiave.
Notare che i parametri di input nelle Sottofunzioni RunScript di Grasshopper sono tutti definiti da valore (parola chiave ByVal). Questo significa che sono copie degli input originali, e ogni variazione di questi parametri all'interno dello script non modificher&#xE0; in nessun modo l'input originale. Per&#xF2;, se vengono definite altre Sottofunzioni o funzioni all'interno del componente script, i parametri possono essere definiti come riferimento (ByRef). Definire i parametri come riferimento significa che ogni variazione di questi parametri all'interno della funzione cambier&#xE0; anche il valore originale da cui questi hanno preso riferimento.
Non &#xE8; sempre necessario includere tutto il codice all'interno del corpo RunScript, &#xE8; anche possibile definire, se necessario, sottofunzioni e funzione esterne da richiamare. Perch&#xE8; usare funzioni esterne? &#x2022; Per semplificare il codice della funzione principale. &#x2022; Per rendere il codice pi&#xF9; leggibile. &#x2022; Per isolare e riusare funzionalit&#xE0; comuni. &#x2022; Per definire funzioni specializzate, come iterazioni.
Qual'&#xE8; la differenza tra Sottofunzioni e Funzioni? Si utilizzano Sottofunzioni se non si ha necessit&#xE0; di valori di ritorno. Le funzioni permettono di ritornare un risultato. Basicamente si assegna un valore al nome della funzione. Per esempio:
Function AddFunction( ByVal x As Double, ByVal y As Double ) AddFunction = x + y
End Function
Come &#xE8; gi&#xE0; stato detto, non c'&#xE8; necessit&#xE0; di avere una Funzione per avere un valore di ritorno. Anche le Sottofunzioni possono compiere lo stesso processo attraerso parametri di input definiti come &#x201C;ByRef&#x201D;. Nel seguente, &#x201C;rc&#x201D; &#xE8; usato per ritornare il risultato:
Sub AddSub( ByVal x As Double, ByVal y As Double, ByRef rc As Double )
107
Page 1 |
Page 2 |
Page 3 |
Page 4 |
Page 5 |
Page 6 |
Page 7 |
Page 8 |
Page 9 |
Page 10 |
Page 11 |
Page 12 |
Page 13 |
Page 14 |
Page 15 |
Page 16 |
Page 17 |
Page 18 |
Page 19 |
Page 20 |
Page 21 |
Page 22 |
Page 23 |
Page 24 |
Page 25 |
Page 26 |
Page 27 |
Page 28 |
Page 29 |
Page 30 |
Page 31 |
Page 32 |
Page 33 |
Page 34 |
Page 35 |
Page 36 |
Page 37 |
Page 38 |
Page 39 |
Page 40 |
Page 41 |
Page 42 |
Page 43 |
Page 44 |
Page 45 |
Page 46 |
Page 47 |
Page 48 |
Page 49 |
Page 50 |
Page 51 |
Page 52 |
Page 53 |
Page 54 |
Page 55 |
Page 56 |
Page 57 |
Page 58 |
Page 59 |
Page 60 |
Page 61 |
Page 62 |
Page 63 |
Page 64 |
Page 65 |
Page 66 |
Page 67 |
Page 68 |
Page 69 |
Page 70 |
Page 71 |
Page 72 |
Page 73 |
Page 74 |
Page 75 |
Page 76 |
Page 77 |
Page 78 |
Page 79 |
Page 80 |
Page 81 |
Page 82 |
Page 83 |
Page 84 |
Page 85 |
Page 86 |
Page 87 |
Page 88 |
Page 89 |
Page 90 |
Page 91 |
Page 92 |
Page 93 |
Page 94 |
Page 95 |
Page 96 |
Page 97 |
Page 98 |
Page 99 |
Page 100 |
Page 101 |
Page 102 |
Page 103 |
Page 104 |
Page 105 |
Page 106 |
Page 107 |
Page 108 |
Page 109 |
Page 110 |
Page 111 |
Page 112 |
Page 113 |
Page 114 |
Page 115 |
Page 116 |
Page 117 |
Page 118 |
Page 119 |
Page 120 |
Page 121 |
Page 122 |
Page 123 |
Page 124 |
Page 125 |
Page 126 |
Page 127 |
Page 128 |
Page 129 |
Page 130 |
Page 131 |
Page 132 |
Page 133 |
Page 134 |
Page 135 |
Page 136 |
Page 137 |
Page 138 |
Page 139 |
Page 140 |
Page 141 |
Page 142 |
Page 143 |
Page 144 |
Page 145 |
Page 146 |
Page 147 |
Page 148 |
Page 149 |
Page 150 |
Page 151 |
Page 152 |
Page 153 |
Page 154 |
Page 155 |
Page 156 |
Page 157 |
Page 158 |
Page 159 |
Page 160 |
Page 161 |
Page 162 |
Page 163 |
Page 164