Scala Stack trait
Прошу помощи в заданиях по языку Scala. Задания прилагаю:
1) Описать класс для поиска слова в строке. В виде трейтов реализовать поиск по точному совпадению и поиск по вхождению.
Obj.Search(‘слов’, ‘строка со словом’) -> поиск по вхождению
Obj.Search(‘слово’, ‘строка со словом’) -> точный поиск (не найдено)
Obj.Search(‘слово’, ‘строка где есть слово’) -> точный поиск
2) Реализовать класс стек. Методы стека (добавление, удаление, вывод) описать отдельными трейтами.
3) Реализовать класс множества в виде списков. С помощью трейтов реализовать методы объединения произведения и разности множеств.
Есть несколько вопросов, если кто то разбирается подскажите пожалуйста. Можно ли сделать трейтами функции которые импортируются, для работы со стеком например, как это должно будет выглядеть? Не обязательно стек, просто для примера, кому будет не сложно. Я понимаю как работать со стеком просто функциями, но трейтами нет. Спасибо.
Ответы (1 шт):
Автор решения: Vladislav Grin
→ Ссылка
import scala.collection.mutable.Stack
object GfG
{
def main(args:Array[String])
{
val s = Stack[Int]()
trait push {
def p(i:Int) {
s.push(i)
println(s)
}
}
trait pop {
def pop() {
s.pop()
println(s)
}
}
trait view1 {
def view() {
println(s)
}
}
class Stack extends push with pop with view1 {
override def p(i: Int): Unit = super.p(i)
override def pop(): Unit = super.pop()
override def view(): Unit = super.view()
}
val b = new Stack with push with pop with view1
println("Заполнение")
b.p(15)
b.p(20)
b.p(25)
b.p(30)
println("Удаление")
b.pop()
b.pop()
b.pop()
println("Вывод")
b.view()
}
}