загрузка внешних scala скриптов в scala файл - PullRequest
0 голосов
/ 20 февраля 2020

Я изначально создал сценарии с множеством функций на 2 отдельных scala рабочих листах. я заставил их работать и теперь хочу объединить эти отдельные сценарии ie, импортировав и используя их в третий файл. из того, что я прочитал, вы не можете просто импортировать внешние скрипты, вы должны сначала превратить их в класс и поместить в пакет. поэтому я попробовал это, но я все еще не мог импортировать это

я знаю, что это может быть немного базовым c для этого сайта, но я изо всех сил пытаюсь найти много scala документации.

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

пример моей программы

сумматор. scala

package adder
class adder {
  def add_to_this(AA:Int):Int={
    var BB = AA + 1;
    return BB
    }  
}

сборка. scala

package builder
class build {
  def make_numbers(){
  var a = 0;
  var b = 0;}
}

main.s c

import adder
import builder 
object main {
 adder.adder.add_to_this(10);

}

ошибки, которые я получаю,

объект не является элементом сумматора пакетов объект не является членом компоновщика пакетов

1 Ответ

0 голосов
/ 20 февраля 2020

Классы в scala немного отличаются от классов в java. Если вам нужно что-то вроде singleton, вы захотите использовать object вместо класса, то есть:

package com.example
object Main extends App {
  object Hide{
    object Adder{
      def addToThis(AA:Int):Int = AA + 1
    } 
  }
 object Example{
   import com.example.Main.Hide.Adder
   def run(): Unit = println(Adder.addToThis(10))
 }
 Example.run()
}

Рассмотрите такие объекты, как пакеты / модули, которые также являются обычными значениями. Вы можете импортировать объект по его полному пути, то есть com.example.Main.Hide.Adder, вы также можете импортировать содержимое объекта, добавив .{addToThis}, или импортировать что-либо из объекта, добавив ._ после объекта.

Обратите внимание, что классы, черты и классы дел нельзя использовать в качестве объектов, вы ничего не можете с этим сделать, если у вас нет экземпляра - модификатора static нет.

...