создать файл сценария Scala в Eclipse - PullRequest
7 голосов
/ 30 октября 2011

Я играю со Скалой. Что мне нужно, так это просто набор определений функций, но в Eclipse я могу создавать только .scala файлы, для которых функция def должна находиться внутри объекта или класса.

Но я вижу онлайн-скрипт Scala, здесь , который не использует объект для переноса всех функций.

Конечно, я могу использовать объект, чтобы обернуть все свои функции, но мне просто интересно, требуется ли это. Спасибо!

Ответы [ 3 ]

2 голосов
/ 30 октября 2011

Да, в Eclipse вам нужно обернуть все в объект или класс.

Вы можете редактировать скрипты Scala в Eclipse, пока вы оборачиваете код в объект и избегаете Шебанга . Просто запустите скрипт с scala -i scriptName.scala -e "Main.main(args)" (при условии, что у вас есть папка «bin» дистрибутива scala на вашем пути ).

foo.scala:

object Main extends App {
  println ("foo")
}

Для запуска:

scala -i foo.scala -e "Main.main(args)"
2 голосов
/ 30 октября 2011

Но я вижу онлайн-скрипт Scala, который не использует объект, чтобы обернуть все функции.

Обратите внимание, что в этом случае функции нельзя вызывать из других файлов (при запуске они заключаются в object с именем, сгенерированным компилятором). Если вам «нужен только набор определений функций», это, вероятно, не то, что вам нужно :) AFAIK, Scala IDE в настоящее время не поддерживает файлы сценариев, но вы можете зарегистрировать запрос функции здесь .

1 голос
/ 30 октября 2011

Насколько мне известно, невозможно написать функции или переменные полностью вне области видимости. Тем не менее, можно записать их вне определения класса / объекта. Вы просто должны обернуть их в объект пакета . В основном происходит то, что вместо привязки функции / переменной к данному классу или объекту, вы привязываете ее к пакету. Пример:

package test
package object inside {
  def hello = println("Hello from outer space!")
  class Foo {
    hello // call the function from the package
  }
}

Теперь, когда вы создаете Foo, вы должны напечатать «Привет из космоса!».

Не зная полностью, о чем я говорю, я мог представить, что версия скрипта, которую вы упомянули выше, работает, потому что скрипт выполняется в какой-то среде. Итак, представьте, что какой-то класс загружает скрипт, затем оборачивает его в объект и запускает его. Это подразумевает ситуацию, похожую на ту, что описана выше: функции все еще «принадлежат» где-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...