Nano Hash - криптовалюты, майнинг, программирование

простая справка scala: недопустимое начало простого выражения

Я изучаю scala и думаю, что не понимаю чего-то довольно простого. Я не смог найти четкого ответа на этот вопрос в Интернете. Я хочу объявить переменную внутри функции, чтобы я мог выполнять некоторые манипуляции, как я буду делать в чем-то вроде Python или Java. Итак, например, я объявляю этот код вне функции, и у него нет проблем:

  var myint = 10;

Однако, когда я пытаюсь сделать какое-либо объявление, например, объявить ту же переменную внутри функции:

  def product [A,B](xs:List[A]) (ys:List[B]) =
    var myint = 10;

Я получаю "незаконное начало простого выражения". Почему это происходит? В чем разница между объявлением внутри и снаружи функций?

Что я хочу сделать в целом, так это объявить новую переменную, которая берет эти два списка и создает список списков. Итак, если xs = [1,2] и ys = [6,7], я хочу создать переменную, которая будет [[1,2][6.7]]. Как я могу создать эту переменную внутри функции продукта?

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

23.09.2016

  • Брекеты, def f = { stuff }. Содержать больше, чем выражение. 23.09.2016

Ответы:


1

Вам не нужна переменная. Просто верните новый список списков. (Вам также не нужны точки с запятой.)

def product[A](xs: List[A], ys: List[A]): List[List[A]] = 
  List(xs,ys)

Scala — это статически типизированный язык. Он внимательно следит за типом всех элементов, аргументов, типов возвращаемого значения и т. д. Обратите внимание, как изменяется тип возвращаемого значения, если два списка относятся к разным типам.

def product[A,B](xs: List[A], ys: List[B]): List[List[Any]] =
  List(xs,ys)

Это приводит к потере информации о типе, что обычно приводит к плохим результатам. Избегай это.

23.09.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..