我们要为Samsung Groovy SmartThings实施基础架构。当然,基础结构的主要部分是使用其相应的方法为每个设备实现不同的类。
例如,对于锁的设备,我们假设我们有一个带有锁类的锁类,方法为lock()和unlock()。这里的问题是我们在Groovy的SmartThings应用程序之一中拥有这部分代码:

def presence(evt)
{
    if (evt.value == "present") {
            //Somecode
            lock1.unlock()
    }
    else {
            //Somecode
            lock1.lock()
    }
}


因此,很可能lock1是类lock的对象,而lock()和unlock()是该类的方法。这是东西:
使用lock1 [0] .unlock()命令可解锁#0号门锁,但使用lock1.unlock()命令可解锁所有门锁。

这里的问题是如何创建类?如果lock1是对象列表,我们如何拥有像lock1.unlock()这样的命令。

这里的要点是,两个对象应该具有相同的名称lock1,并且两个方法都是名为lock()的相同方法。

先感谢您。

最佳答案

您在这里有2个选项:

1)使用Groovy的spread运算符在列表的每个元素上调用方法:

List lock1 = [.....]
lock1.*lock()


2)使Lock类扩展或包含元素列表,并向其添加类级别的方法:

class Lock {
  List locks

  def lock() {
    locks.*lock()
  }

  // this method allows for calls like lock1[42].lock()
  def getAt( int ix ) {
    locks[ ix ]
  }
}


实际上,对于物联网设备而言,继承是有害的。

关于java - 三星SmartThings应用程序中如何实现设备和传感器的类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56657876/

10-11 07:12