Правильно перефразируя подпись машинописного текста, возвращая пользовательский тип, а не строгую подпись, требуемую для метода

Короче говоря, объекты Java обладают некоторыми очень своеобразными свойствами.

В общем, Java имеет примитивные типы (int, bool, char, double и т. д.), которые передаются непосредственно по значению. Тогда у Java есть объекты (все, что происходит от java.lang.Object). Объекты на самом деле всегда обрабатываются посредством ссылки (ссылка является указателем, который вы не можете коснуться). Это означает, что по сути объекты передаются по ссылке, так как ссылки обычно не интересны. Тем не менее, это означает, что вы не можете изменить, на какой объект указывается, поскольку сама ссылка передается по значению.

Звучит ли это странно и запутанно? Рассмотрим, как C реализует передачу по ссылке и передает значение. В C по умолчанию принято передать значение. void foo(int x) передает значение int по значению. void foo(int *x) - это функция, которая не хочет int a, а указатель на int: foo(&a). Можно было бы использовать это с оператором & для передачи адреса переменной.

Возьмите это на C ++, и у нас есть ссылки. Ссылки в основном (в этом контексте) синтаксического сахара, которые скрывают указательную часть уравнения: void foo(int &x) вызывается foo(a), где сам компилятор знает, что это ссылка и адрес без ссылки a должен быть принят. В Java все переменные, относящиеся к объектам, фактически относятся к ссылочному типу, фактически вызывая вызов по ссылке для большинства целей и целей без мелкозернистого управления (и сложности), предоставляемого, например, C ++.

1
задан prussian blue 20 January 2019 в 09:55
поделиться

1 ответ

Большое спасибо за помощь!

Мне наконец-то удалось достичь того, что я хотел, с помощью функции.

Мой окончательный код выглядит следующим образом

type Point = [number, number];
function Point(x: number, y: number):Point {
  return [x, y]
}

let Painter = {
  ramdomPoint: (): Point => {
    return Point(Math.random() * w, Math.random() * h);
  }
};

Я думаю, что вот так, он достаточно выразителен. Я надеюсь, что это помогает другим! Привет из Испании:)

0
ответ дан prussian blue 20 January 2019 в 09:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: