class Sample {
field1: number;
field2: number;
constructor(field1: number, field2: number);
constructor(props: { field1: number; field2: number });
constructor(
...args: [{ field1: number; field2: number }] | [field1: number, field2: number]
) {
if (args.length === 1) {
this.field1 = args[0].field1;
this.field2 = args[0].field2;
} else {
this.field1 = args[0];
this.field2 = args[1];
}
}
}
// Пример создания
new Sample(123, 4555);
new Sample({
field1: 123,
field2: 4555,
});
var number = 1.123;
var russian = new CultureInfo("ru-RU"); // Россия
var american = new CultureInfo("en-US"); // США
Console.WriteLine($"Россия: {number.ToString(russian)}");
// Вывод: 1,123
Console.WriteLine($"Америка: {number.ToString(american)}");
// Вывод: 1.123
TryParse
и Parse
методы принимают в себя IFormatProvider
, который имеет информацию о локали (CultureInfo
)if (double.TryParse("123.123", russian, out var result))
{
Console.WriteLine($"Русский: {result}");
}
else if (double.TryParse("123.123", american, out result))
{
Console.WriteLine($"Американский: {result}");
}
else
{
Console.WriteLine($"Ни один не сработал");
}
// Выведет: Американский: 123,123
Говорю сразу мьютекс мне не подходит, так как это уже не будет параллельно.
Как можно реализовать такое поведение?
function getNoteMinMax() {
let min = null, max = null;
for (const item of students.map(s => ({
student: s,
average: (s.marks.reduce((a, b) => a + b, 0) / s.marks.length)
})) {
if (min === null || item.average < min.average) {
min = item;
}
if (max === null || item.average > max.average) {
max = item;
}
}
return {
min: min.student,
max: max.student
}
}