English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Scala أنواع البيانات

Scala تستخدم نفس أنواع البيانات مثل Java، والجدول أدناه يوضح أنواع البيانات التي يدعمها Scala:

نوع البياناتالوصف
Byteعدد صحيح ذو 8 بت، مدى القيمة من -128 إلى 127
Shortعدد صحيح ذو 16 بت، مدى القيمة من -32768 إلى 32767
Int عدد صحيح ذو 32 بت، مدى القيمة من -2147483648 إلى 2147483647
Long عدد صحيح ذو 64 بت، مدى القيمة من -9223372036854775808 إلى 9223372036854775807
Floatعدد عشري ذو 32 بت يتبع معيار IEEE 754
Doubleعدد عشري ثنائي ذو 64 بت يتبع معيار IEEE 754
Charحرف Unicode عشري، مدى القيمة من U+0000 إلى U+FFFF
Stringسلسلة من الأحرف
Booleanصحيح أو خطأ
Unitيُمثل عدم وجود قيمة، ويُماثل void في لغات البرمجة الأخرى. يستخدم كنوع نتيجة لعمليات لا تعود أي شيء. Unit لديه قيمة واحدة فقط، ويكتب ك()
Nullnull أو الإشارة العدمية
Nothingنوع Nothing هو في أسفل سلسلة أنواع الكلاسات في Scala؛ هو نوع فرعي لأي نوع آخر
AnyAny هي النوع الأب للجميع أنواع الأنواع الأخرى
AnyRefمصفوفة AnyRef هي نوع الأساس لجميع أنواع الاستدلال (reference class) في Scala

كل أنواع البيانات المدرجة في الجدول أعلاه هي كائنات، مما يعني أن Scala ليس لديها أنواع أساسية مثل Java. يمكن في Scala إجراء عمليات على الأنواع الأساسية مثل الأرقام.

Scala literals الأساسية

Scala بسيطة للغاية وجذابة. سنقوم بتوضيح Scala literals بشكل مفصل فيما بعد.

القيم النصية العددية

استخدمت القيم النصية العددية لنوع Int، وإذا كان يجب أن تكون Long، يمكنك إضافة L أو l كاسم بعد الرقم كاسم.

0
035
21 
0xFFFFFFFF 
0777L

القيم النصية العددية

إذا كان هناك حرف f أو F بعد عدد عشري، فإن ذلك يعني أن هذا هو نوع Float، وإلا فإنه نوع Double. مثال:

0.0 
1e30f 
3.14159f 
1.0e100
.1

القيم النصية الحقيقية

القيم النصية الحقيقية هي true وfalse.

نص السمات

يُكتب نص السمات كما يلي: <identifier> هنا <identifier> يمكن أن يكون أي وسم من أي حرف أو رقم (ملاحظة: لا يمكن أن يبدأ بالرقم). يتم تعيين هذا النوع إلى مثيل من فئة scala.Symbol المسبقة التعريف.

مثلاً: نص السمات 'x هي تعبير scala.Symbol("x") الاختصار، يتم تعريف نص السمات كما يلي:

package scala
final case class Symbol private (name: String) {
   override def toString: String = "'" + name
}

نص واحد

في Scala يتم استخدام علامات الاقتباس الصغيرة لتحديد نص واحد. ' لتحديد، مثلما يلي:

'a' 
'\u0041'
'\n'
'\t'

من بينها \ يُمثل الحرف المتبادل، ويمكن أن يتبعه u0041 رقم أو \r\n ومثل الأحرف المتبادلة المحددة.

نص نصي

في Scala يتم استخدام علامات الاقتباس المزدوجة لتحديد نص 字ي. "" لتحديد، مثلما يلي:

"Hello,
World!"
"موقع تعليمات الأساس: ar.oldtoolbag.com"

طريقة التعبير عن 字符串 متعددة الأسطر

يُمكن التعبير عن 字符串 متعددة الأسطر باستخدام ثلاثة علامات اقتباس مزدوجة، وتكون النسخة كالتالي:"...".

مثال فيما يلي:

val foo = "تعليمات الأساس"
ar.oldtoolbag.com
ar.oldtoolbag.com
www.runnoob.com
يمكن الوصول إلى جميع هذه العناوين بسهولة.

قيمة Null

القيمة المطلقة هي نوع scala.Null.

Scala.Null وscala.Nothing أنواع خاصة يتم التعامل معها بطريقة متماثلة مع أنظمة أنواع Scala الموجهة للأمام لمعالجة بعض "الحالات الحدودية".

النوع Null هو نوع استدعاء النوع المطلق، وهو فرع لكل فئة استدعاء (الفئات التي تنسق من AnyRef). لا يمكن أن يكون Null متوافقًا مع أنواع القيم.}}

تحويلات نقاط العكسية لScala

في الجدول التالي، تم ذكر التحويلات الشائعة لنقاط العكسية:

تحويلات النقاط العكسيةUnicodeالوصف
\b\u0008التراجع (BS) ، يضيف السطر الحالي إلى الموقع السابق
\t\u0009تبويب (HT) (القفز إلى الموقع التالي للتبويب)
\n\u000aسطر (LF) ، يضيف السطر الحالي إلى بداية السطر التالي
\f\u000cصفحة (FF) ، تضيف السطر الحالي إلى بداية الصفحة التالية
\r\u000dمكتبة (CR) ، تضيف السطر الحالي إلى بداية السطر الحالي
"\u0022تمثل رمز الحرف المائل للاحرف "،
'\u0027تمثل رمز الحرف المائل للاحرف '،
\\\u005cتمثل رمز النقطة العكسية للاحرف '\'

يمكن استخدام سلسلة تحويل ثمانية لتقديم أي حرف Unicode من 0 إلى 255، وهي الشرطية المنقوطة "\" متبوعة ب حتى ثلاثة ثمانيات.

في الأحرف أو النصوص، لا يمكن أن تكون السلسلة الناتجة عن الشرطية المنقوطة و后面的 الأحرف سلسلة تحويل معتمدة مما يؤدي إلى خطأ في التجميع.

في هذا المثال، يتم عرض بعض استخدمات الأنواع الناتجة عن الافتراضات:

object Test {
   def main(args: Array[String]) {
      println("Hello\tWorld\n\n");
   }
}

النتيجة التي تنتج عن تشغيلها كالتالي:

$ scalac Test.scala
$ scala TestHello    World