Kopírování



Varování pro začátečníky: Přířazujete-li hodnotu slova  jinému slovu , proveďte to s příkazem COPY.

>> var1: var2                ; jste-li si jisti, co činíte

>> var1: copy var2        ; může vám ušetřit hodiny ladění

action! copy

Přiřadí kopii dat jinému slovu.

Lze použít ke kopírování řad a  objektů.

Nepoužívá se pro jednotlivé položky typu: integer! float! char! etc. Pro tyto účely můžeme jednoduše použít dvojtečku.

Pohleďme na jednoduché přiřazení (závislá kopie):


>> s: [ "cat" "dog" "fox" "cow" "fly" "ant" "bee" ]
== ["cat" "dog" "fox" "cow" "fly" "ant" "bee"]

>> b: s
== ["cat" "dog" "fox" "cow" "fly" "ant" "bee"]

>> take/part s 4
== ["cat" "dog" "fox" "cow"]

>> b
== ["fly" "ant" "bee"]                ; změna se projeví u obou proměnných

Nyní na přiřazení s 'copy' (nezávislá kopie):

>> s: [ "cat" "dog" "fox" "cow" "fly" "ant" "bee" ]
== ["cat" "dog" "fox" "cow" "fly" "ant" "bee"]

>> b: copy s
== ["cat" "dog" "fox" "cow" "fly" "ant" "bee"]

>> take/part s 4
== ["cat" "dog" "fox" "cow"]

>> b
== ["cat" "dog" "fox" "cow" "fly" "ant" "bee"]

'Nezávislost' se netýká vnořených řad (bloků). Příkaz  copy nemění odkaz na tyto vnořené řady. Chcete-li pro tento případ vytvořit nezávislou kopii, musíte použít upřesnění /deep.


copy/part

Omezuje délku (number! či series!) kopírované části.


>> a: "my house is a very funny house"
>> b: copy/part a 8
== "my house"

copy/types

Kopíruje jenom určité typy neskalárních hodnot.


copy/deep

Kopíruje vnořené hodnoty.