Ka Qeybqaado SoplangContribution guidelines

Data Types in Soplang

Soplang waxa uu leeyahay noocyo xog oo kala duwan si uu u metelo qiimeyaal kala geddisan. Boggan waxa uu daboolayaa noocyada aasaasiga ah (primitives) iyo ururinta (collections) iyo sida ugu habboon ee loo isticmaalo.

Primitive Types

Kuwaani waa noocyada ugu aasaasiga ah ee dhisaya noocyada kale ee adag.

Numbers

Soplang waxa uu taageeraa tirooyinka dhan iyo jajab. Waxa aad isticmaali kartaa door (dynamic) ama abn (static).

numbers.sop
// Dynamic typing
door lambarka1 = 42       // Integer
door lambarka2 = 3.14     // Floating-point

// Static typing
abn lambarka3 = 100       // Integer
abn lambarka4 = -25       // Negative integer

// Arithmetic
qor(lambarka1 + lambarka2)   // 45.14
qor(lambarka1 * lambarka3)   // 4200
qor(lambarka3 / lambarka1)   // 2.38...

Strings

Strings waa taxane xarfo ah. Waxaad adeegsan kartaa q-double ama q-single, ka dibna ku shaqayn karaan habab kala duwan.

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

// Dherer & habab
qor(magac1.dherer())           // 7
qor(magac1.sareyn())           // SOPLANG
qor(magac1.hooseyn())          // soplang
qor(magac3.qayb(0, 7))         // Soplang

// Interpolation (haddii ay taageerto f-strings)
door version = 2.0
qor(f"{magac1} v{version}")    // Soplang v2.0

Booleans

Qiimayaasha run/been: run iyo been. Waxaad adeegsan kartaa door ama bool.

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)  // false
qor(waa_sax || waa_qalad)  // true
qor(!waa_sax)              // false

// Comparison
door x = 10
door y = 20
qor(x > y)     // false
qor(x <= y)    // true
qor(x == 10)   // true
qor(x != y)    // true

Collection Types

Ururinta waxa ay kuu oggolaanayaan in aad isku kaydiso qiimeyaal badan.

Lists

Liisaska waa ururin leh amar (ordered). Waad abuuri kartaa adigoo adeegsanaya teed (static) ama door oo leh [].

lists.sop
// Abuurista liis
door tiro = [1, 2, 3, 4, 5]
teed magacyada = ["Cabdi", "Caasha", "Xasan", "Hodan"]
teed isku_dhafan = [1, "Soplang", run, 3.14]

// Helidda walxaha (zero-indexed)
qor(tiro[0])         // 1
qor(magacyada[2])    // Xasan

// Beddelid
tiro[0] = 10
qor(tiro)            // [10, 2, 3, 4, 5]

// Hababka liisaska
tiro.kudar(6)        // ku dar dhamaadka
qor(tiro)            // [10, 2, 3, 4, 5, 6]

magacyada.saar(1)    // ka saar index 1
qor(magacyada)       // ["Cabdi", "Xasan", "Hodan"]

// Dherer
qor(magacyada.dherer())  // 3

Objects (Dictionaries)

Objects waa lammaane fure–qiime ah. Waxaad ku abuuri kartaa door adigoo adeegsanaya {} ama nooca static ee walax.

objects.sop
// Abuurista objects
door qof = {
  "magac": "Cabdilaahi",
  "da": 25,
  "waa_arday": run
}

walax luuqad = {
  "magac": "Soplang",
  "version": 2.0,
  "sanadka": 2023,
  "features": ["OOP", "Dynamic Typing", "Easy Syntax"]
}

// Helidda qiimeyaal
qor(qof["magac"])       // Cabdilaahi
qor(luuqad["version"])  // 2.0

// Dot-notation (haddii la taageero)
qor(qof.magac)          // Cabdilaahi
qor(luuqad.features)    // ["OOP", "Dynamic Typing", "Easy Syntax"]

// Beddelid
qof["da"] = 26
qof["degaan"] = "Muqdisho"
qor(qof)

// Hubi furaha
qor("magac" ku dhex jira qof)   // true
qor("luuqad" ku dhex jira qof)  // false

// Habab
qor(qof.fureyaasha())    // ["magac", "da", "waa_arday", "degaan"]
qor(qof.qiimeyaasha())   // ["Cabdilaahi", 26, true, "Muqdisho"]
qor(luuqad.dherer())     // 4