چندتاییها، اشیا دادهای سبکی میباشند که معمولا برای خروجی دادن طراحی سایت در مشهد بیشتراز یک مقدار از توابع (سوای نیاز به محدود کردن مقادیر دادهای در نوعهای تجمعی نظیر کلاس) گزینه به کار گیری قرار می گیرند. از دید ساختار و قواعد دستوری، شیوه تعریفوتمجید
تعریف
تعریفوتمجید
تعریف و تمجید
تمجید
چندینتاییها در دو لهجه، بسیار شبیه یکدیگر میباشد (ولی فارغ از در حیث تصاحب کردن نقطه ویگولها و آکولادها)؛ با این هم اکنون، کردار آن ها پاره ای گوناگون از یکدیگر میباشد.
در گویش پایتون، چندتاییها «گروههای» (Collections) معمولی (نظیر لیستها) اما تغییر تحول ناپذیر میباشند (برخلاف لیستها). در نقطه مقابل، چندتاییهای لهجه سیشارپ (ValueTuples)، شی ءها متنوعتری نسبت به لهجه پایتون میباشند. همینطور، در لهجه سیشارپ این قابلیت و امکان برای اپنویسان آماده گردیدهاست تا چندتاییهای متشکل از اشیا دیگر (اشیا کلاسهای تمجید گردیده بوسیله استفاده کننده) را تعریفوتمجید نمایند.
تعریفوتمجید چندتاییها در پایتون:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# cannot have named fields by default - use namedtuple for that
tup = ("this", "is", "a", "tuple")
for t in tup: # can iterate over items
print(t)
# t[0] = "that" # error - Python tuples are immutable
def makeTuple():
return "The answer is", 42
t = makeTuple()
print(t) # prints ('The answer is', 42)
t1, t2 = makeTuple() # tuple deconstruction
print(t1, t2) # prints The answer is 42
print(t + t)
تمجید چندتاییها در سیشارپ:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// C# tuples can have named items
var tup = ("this", "is", "a", literallyTuple: "tuple");
// Named items can still be accessed by the .ItemX property
Console.WriteLine($"{tup.Item4} is the same as {tup.literallyTuple}");
// foreach(var item in tup) // error - tuples are not iterable
// {
// Console.WriteLine(item);
// }
tup.Item1 = "that"; // values can be reassigned
(string, int) MakeTuple() => ("The answer is", 42);
var t = MakeTuple();
Console.WriteLine(t); // prints (The answer is, 42)
var (t1, t2) = MakeTuple(); // tuple deconstruction
Console.WriteLine($"{t1} {t2}"); // prints The answer is 42
class TheAnswer
{
public int Answer { get; set; }
public string Description { get; set; }
// classes can have deconstructors (not to be confused with finalizers)
// you can have as many as you like, out parameters define the resulting tuple
public void Deconstruct(out int answer, out string description)
{
answer = Answer;
description = Description;
}
}
var theAnswer = new TheAnswer
{
Answer = 42,
Description = "The ultimate answer to life, universe and everything"
};
var (a, d) = theAnswer;
Console.WriteLine($"{d} is {a}.");
// unsurprisingly prints The ultimate answer to life, universe and everything is 42.
این خصوصیت از ورژن 7 گویش نرمافزارنویسی سیشارپ در مشت نرم افزارنویسان قرار گرفته میباشد. چندتاییهای تعریف و تمجید گردیده بوسیله خصوصیت ValueTuples در گویش سیشارپ، گوناگون از چندتایی Tuple (یکیاز تجهیزات مهم سیشارپ) دراین گویش میباشد. برای استعمال از چندتاییهای ValueTuples، ما یحتاج میباشد تا بسته System.ValueTuple از Nuget آیتم به کارگیری قرار بگیرد.