Data Types
Soplang types: integers, floating-point numbers, strings, booleans, lists, objects, and null values.
Data Types in Soplang
Soplang provides primitive values and collections. Declare a dynamic variable with door, or use a type keyword for an explicitly typed variable.
Primitive Types
Numbers
Soplang supports integers (abn) and binary floating-point numbers (jajab). Use door for a dynamic variable or abn/jajab for an explicitly typed declaration. See Numbers.
numbers.sop
// Dynamic typing door lambarka1 = 42 // abn door lambarka2 = 3.14 // jajab // Static typing abn lambarka3 = 100 abn lambarka4 = -25 // Arithmetic qor(lambarka1 + lambarka2) // 45.14 qor(lambarka1 * lambarka3) // 4200 qor(lambarka3 / lambarka1) // 2.380952380952381
Strings
Strings (qoraal) are sequences of Unicode characters. Use double quotes ("...") or single quotes ('...'). Use f"...{name}..." to interpolate values, or join strings with +. See Strings.
strings.sop
// Dynamic typing door magac1 = "Soplang" door magac2 = 'Programming Language' // Static typing qoraal magac3 = "Soplang: Luuqadda Barnaamijyada ee Afka Soomaaliga" // Concatenation qor(magac1 + " - " + magac2) // Soplang - Programming Language // Length and methods qor(dherer(magac1)) // 7 qor(magac1.weynee()) // SOPLANG qor(magac1.yaree()) // soplang qor(magac3.jar(0, 7)) // Soplang qor(magac1[0]) // S // Join a number and a string door version = 3 qor(magac1 + " v" + version) // Soplang v3
Booleans
The boolean values are run (true) and been (false). Declare them with door or bool. Printing a boolean displays run or been.
booleans.sop
// Dynamic typing door waa_sax = run door waa_qalad = been // Static typing bool waa_arday = run bool waa_macalin = been // Logical qor(waa_sax && waa_qalad) // been qor(waa_sax || waa_qalad) // run qor(!waa_sax) // been // Comparison door x = 10 door y = 20 qor(x > y) // been qor(x <= y) // run qor(x == 10) // run qor(x != y) // run
Null
maran represents the absence of a value. Printing it, or inspecting it with nooc(), produces maran. A function that returns no value also returns maran.
maran.sop
door natiijo = maran qor(natiijo) // maran qor(nooc(natiijo)) // maran
Collection Types
Collections hold multiple values.
Lists
Lists (teed) are ordered collections. Create a list using [], with either teed or door in its declaration. See Lists.
lists.sop
// Create lists door tiro = [1, 2, 3, 4, 5] teed magacyada = ["Cabdi", "Caasha", "Xasan", "Hodan"] teed isku_dhafan = [1, "Soplang", run, 3.14] // Read items (zero-indexed) qor(tiro[0]) // 1 qor(magacyada[2]) // Xasan qor(magacyada[-1]) // Hodan (negative indexes count from the end) // Replace an item tiro[0] = 10 qor(tiro) // [10, 2, 3, 4, 5] // List methods tiro.geli(6) // Append to the end qor(tiro) // [10, 2, 3, 4, 5, 6] door ugu_dambeeyay = magacyada.saar() // Remove the last item qor(ugu_dambeeyay) // Hodan qor(magacyada) // [Cabdi, Caasha, Xasan] // Length qor(magacyada.dherer()) // 3 qor(dherer(isku_dhafan)) // 4
Objects
Objects (walax) store string keys and their values. Create one using {}, with either walax or door in its declaration. See Objects.
objects.sop
// Create objects door qof = { magac: "Cabdilaahi", da: 25, waa_arday: run } walax luuqad = { magac: "Soplang", sanadka: 2023, features: ["OOP", "Dynamic Typing", "Easy Syntax"] } // Read values with dot notation qor(qof.magac) // Cabdilaahi qor(luuqad.features) // [OOP, Dynamic Typing, Easy Syntax] // Bracket notation with a string key qor(qof["magac"]) // Cabdilaahi // Replace and add properties qof.da = 26 qof.degaan = "Muqdisho" qor(qof) // {da: 26, degaan: Muqdisho, magac: Cabdilaahi, waa_arday: run} // Check for a key qor(qof.leeyahay("magac")) // run qor(qof.leeyahay("luuqad")) // been // Methods qor(qof.furayaal()) // [da, degaan, magac, waa_arday] qor(qof.qiimayaal()) // [26, Muqdisho, Cabdilaahi, run] qor(dherer(luuqad)) // 3
Checking Types
Use nooc() to inspect a value's type: abn, jajab, qoraal, bool, teed, walax, hawl, or maran. See Type Conversion.