There are two types of types: simple and composite. A value of a simple type contains no component values, while a value of a composite type may.
NetLogo's only simple types are Number (integers and floats) and Boolean (true, false).
We may consider Turtle and Patch as composite types because turtles and patches can contain attribute values.
String is a composite types because strings contain substrings.
Note: NetLogo doesn't have a Character
type. Instead, characters are represented by length-one strings: "a"
"e" "i" "o"
"u" etc.
AgentSet values are sets of turtles or sets of patches.
List is the most general composite type. Lists may contain any values:
[1 "2" true [4 5]]
A string is a sequence of characters delimited by double quotes:
set state “Mississippi”
We can compare strings using the same operators we use to compare numbers:
observer> print "aardvark" < "zebra"
true
The following reporter detects palindromes:
to-report is-palindrome [some-string]
report some-string = reverse
some-string
end
The following procedure uses the length and item procedures to traverse a string:
to spell [some-string]
let num-chars length some-string
let index 0
repeat num-chars
[
let next-char item index some-string
print next-char
set index index + 1
]
end
For example:
observer> spell "Mississippi"
M
i
s
s
i
s
s
i
p
p
i
The following procedure demonstrates how the word procedure is used to concatenate a string with other values:
to print-turtles
ask turtles
[
print (word "turtle #" who
" is on " patch-here)
]
end
For example, here’s the output produced from a model containing 3 randomly placed turtles:
observer> print-turtles
turtle #0 is on (patch -9 -11)
turtle #1 is on (patch -12 16)
turtle #2 is on (patch 14 4)
to demo
let state "Mississippi"
print position "ss" state
print substring state 2 4
print replace-item 2 state "fff"
print state
end
oserver> demo
2
ss
Mifffsissippi
The hard way using first-put (fput):
set vowels []
set vowels fput "u" vowels
set vowels fput "o" vowels
set vowels fput "i" vowels
set vowels fput "e" vowels
set vowels fput "a" vowels
The easy way:
set vowels (list "a" "e" "i" "o" "u")
And the super-easy way:
set vowels ["a" "e" "i" "o" "u"]
Note: The super-easy way only works
for constants.
The following procedure demonstrates these reporters:
to demo1
let fibs [0 1 1 2 3 5 8 13 21 34]
print first fibs
print but-first fibs
print shuffle fibs
print remove-duplicates fibs
print one-of fibs
print fibs
end
Here's the output produced.
observer> demo1
0
[1 1 2 3 5 8 13 21 34]
[21 13 3 1 0 1 5 34 2 8]
[0 1 2 3 5 8 13 21 34]
2
[0 1 1 2 3 5 8 13 21 34]
There are lots of other useful list reporters. For example:
observer> print mean [200 300 400]
300
Suppose each turtle has a fitness attribute and we want to print the average fitness. We can use the of reporter to convert the fitnesses of all turtles into a list of numbers:
print mean [fitness] of
turtles
turtles-own [fitness]
to init-model
ca
crt 50 [set fitness random 100 setxy
random-xcor random-ycor]
end
to demo-sets
print count turtles
print mean [fitness] of turtles
let chosen-turtle one-of turtles
print chosen-turtle
ask chosen-turtle
[
let candidates turtles in-radius 5
let healthy-candidates candidates with [fitness > 50]
let other-healthy-candidates other healthy-candidates
let candidate one-of other-healthy-candidates
if candidate != nobody
[
print candidate
]
]
end
Here's the output produced:
observer> demo-sets
50
53.06
(turtle 37)
(turtle 4)