نام مستعار¶
اگر رکوردهایی با فیلدهای زیاد داشته باشید، نشانهگذاری نوع داده میتواند طولانی شود که این کار مدیریت آن را دشوار میکند! هدف اصلی استفاده از نام مستعار مقابله با این مشکل است. یک نام مستعار نامی کوتاهتر برای آن نوع داده به حساب میآید. برای نمونه، میتوانید یک نام مستعار User
به این صورت ایجاد کنید:
بجای نوشتن تمام رکورد در هر بار فراخوانی، میتوانیم فقط از User
استفاده کنیم. این کار به ما کمک میکند تا نشانهگذاری نوع داده را به شیوهای خواناتر تعریف کنیم:
-- WITH ALIAS
isOldEnoughToVote : User -> Bool
isOldEnoughToVote user =
user.age >= 18
-- WITHOUT ALIAS
isOldEnoughToVote : { name : String, age : Int } -> Bool
isOldEnoughToVote user =
user.age >= 18
این دو تعریف، معادل هستند، اما تعریفی که با نام مستعار بیان شده، کوتاهتر و خواناتر است. بنابراین، تمام کاری که انجام میدهیم ایجاد یک نام مستعار برای یک نوع داده طولانی است.
مدلسازی¶
استفاده از نام مستعار برای نوع داده هنگام مدلسازی بسیار رایج است. وقتی درباره معماری Elm یاد میگرفتیم، مدلی مانند این را دیدیم:
مزیت اصلی استفاده از نام مستعار، هنگام نشانهگذاری نوع داده در توابع update
و view
است. نوشتن Msg -> Model -> Model
بسیار بهتر از نسخه گسترشیافته آن است! با این کار میتوانیم فیلدهایی به مدل خود اضافه کنیم بدون اینکه نیازی به تغییر نشانهگذاری نوع داده داشته باشیم.
تابع سازنده رکورد¶
وقتی یک نام مستعار برای نوع داده رکورد ایجاد میکنید، یک تابع سازنده رکورد تولید میشود. بنابراین اگر یک نام مستعار User
تعریف کنیم، میتوانیم شروع به ساخت رکوردهایی به این صورت کنیم:
> type alias User = { name: String, age: Int }
> User
<function> : String -> Int -> User
> User "Sue" 58
{ name: "Sue", age: 58 } : User
> User "Tom" 31
{ name: "Tom", age: 31 } : User
سعی کنید یک کاربر دیگر یا یک نام مستعار برای نوع داده خودتان ایجاد کنید. توجه داشته باشید که ترتیب آرگومانها در تابع سازنده رکورد با ترتیب فیلدها در نام مستعار مطابقت دارند!
دوباره تاکید میکنم، این قابلیت فقط برای رکوردها است. ایجاد نام مستعار برای انواع دیگری از داده منجر به ایجاد یک تابع سازنده نخواهد شد.