我有一个演员定义如此:
class nodeActor(ID: String) extends Actor
Run Code Online (Sandbox Code Playgroud)
它包含一个方法,用于在actor启动之前设置它:
def addRef(actor:ActorRef)
Run Code Online (Sandbox Code Playgroud)
我将这个actor实例化为:
val node1 = system.actorOf(Props(new nodeActor("node1")), name="node1")
Run Code Online (Sandbox Code Playgroud)
它返回一个ActorRef.编译器不允许我在ActorRef上调用"addRef",因为它是子类型的成员.所以我使用以下方式投射节点:
node1.asInstanceOf[nodeActor].addRef(link1)
Run Code Online (Sandbox Code Playgroud)
这让编译器感到高兴.然后在运行时我得到
java.lang.ClassCastException: akka.actor.LocalActorRef cannot be cast to ActorStressTest.nodeActor
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎没有意义,因为它是一个子类型,我应该能够投射它.
想法?
我正在Scala中编写一个小型模拟程序.它是基于actor的,所以我创建了一个文件messages.scala,其中包含系统中有效的所有消息.
除此之外,我有一个管理组件,management.scala以及一个定义节点和链接类的文件nodes.scala.管理和节点文件import sim.messages._,然后管理,import sim.nodes._因为它需要能够从该文件实例化事物.
问题来自一个和Tick两个使用的消息类型.编译管理组件后,我得到:management.scalanodes.scala
error: reference to Tick is ambiguous;
it is imported twice in the same scope by
import sim.nodes._
and import sim.messages._
Run Code Online (Sandbox Code Playgroud)
我尝试删除管理组件中的消息导入,因为它们显然已经导入到此范围,但后来又找不到它们了.想法?
我在这里使用Akka actor库.actors库定义了一个部分函数"receive",扩展"actor"的actor必须实现处理各种消息.我正在为我的应用程序创建一个特征层次结构,其中trait"clockActor"扩展了Actor,"MasterClock"和"SubClock"扩展了"clockActor".我想在"时钟"特性的接收功能中添加时钟的通用功能,但是如何在主时钟和副时钟特性中为接收功能添加额外的功能?
简而言之,我需要一种方法来向部分函数添加额外的case语句.想法?
我的应用程序需要能够创建actor的树结构.我想象的标准方法是将实例化代码放在actor中,这样他们就可以实例化他们的孩子.我宁愿的方法是能够在给定路径上实例化一个actor.比如在mySystem中创建actor A然后能够直接创建akka:// mySystem/A/B和其他actor.这样的功能是否存在?它会大大简化我的代码.
编辑:现在我不在我的手机上,让我详细说明.
说我上课了
class myActor extends actor
Run Code Online (Sandbox Code Playgroud)
我需要制作一个这样的n路树.而不是像接收函数那样在接收函数中实例化自己的子节点所需的代码
case Create(n:Int) => {}
Run Code Online (Sandbox Code Playgroud)
我希望通过不包括任何这些来简化myActor代码,而是能够在我的代码手动开始时创建我的层次结构.理想情况下这样(假设假设静态函数"创建"):
val sys = ActorSystem("mySystem")
Akka.Actors.Create("akka://mySystem/a", new myActor())
Akka.Actors.Create("akka://mySystem/a/b", new myActor())
Akka.Actors.Create("akka://mySystem/a/c", new myActor())
Run Code Online (Sandbox Code Playgroud)
这将创建演员树:
a
/ \
b c
Run Code Online (Sandbox Code Playgroud)
现在,这存在吗?有没有更好的方法来实现这一点而不会使用实例化代码混淆我的actor代码?
编辑,第2轮:
好的,看起来这个功能不存在.我改为创建了一个actor的子特性并强制我所有的实例化代码,以便我的具体实现类仍然很整洁.
嘿伙计们,所以我在过去的6个小时里一直在这个问题,并一直在谷歌疯狂无济于事.对,我需要一个指向数组的指针.此数组包含指向链接列表的指针.我将不得不malloc它,因为我不知道数组大小,直到运行时.
LList **array
Run Code Online (Sandbox Code Playgroud)
这是我的第一个想法,但这只是给了我一个LList数组的指针.或者至少这是我的理解.有人可以帮我一把吗?亚历克斯
编辑:确定如何使用它的一些信息.我实现了一个非常基本的哈希表.有一个结构包含指向链表的指针数组的指针.它需要是一个指向数组的指针,这样当我调整表格大小时,我只需将指针更改为指向较大的表格即可.
我在C#中的应用程序中生成按钮,当生成按钮并为该按钮设置弹出属性时,我想启动弹出按钮.我找不到任何方法来模拟winRT中按钮的单击,也没有任何实际显示弹出按钮的方法.有没有办法做到这一点?
当我谈论飞行时,我正在谈论这些:http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.flyout.aspx
不是设置弹出窗口.
我正在做一个我需要一些自定义摆动组件的项目.到目前为止,我已经制作了一个带有一系列图像的新按钮(Java Metal外观根本不适合我的UI).我已经MouseListener在这个新组件上实现了,这就是我的问题出现的地方.我的小部件在悬停时更改图像,单击等,除了我MouseListener将鼠标进入整个GridLayout容器而不是图像中.所以我有一个大约200*100的图像,周围的容器大约是400*200,mouseEntered当它进入那个GridLayout部分(甚至是它的空白部分)而不是在图像上方时会触发该方法.我怎样才能使它只在我将鼠标悬停在图像上时触发?我试过设置大小和边界和其他属性无济于事.
编辑:这是我的问题的演示.正如您所看到的(有些颜色非常相似),右下角按钮只需输入其中的部分即可突出显示GridlLayout.我只想在实际拍摄图像时突出显示,而不是GridLayout部分.

我不会添加MouseListener方法,因为它们只涉及切换显示的图像.
public customWidget()
{
this.setLayout(new FlowLayout());
try {
imageDef=ImageIO.read(new File("/home/x101/Desktop/buttonDef.png"));
imageClick=ImageIO.read(new File("/home/x101/Desktop/buttonClick.png"));
imageHover=ImageIO.read(new File("/home/x101/Desktop/buttonHover.png"));
current=imageDef;
} catch (IOException e)
{
e.printStackTrace();
}
this.addMouseListener(this);
}
protected void paintComponent(Graphics g)
{
super.paintComponents(g);
g.drawImage(current, 0, 0, current.getWidth(), current.getHeight(), null);
}
Run Code Online (Sandbox Code Playgroud)
编辑:添加代码部分