我不明白内部类 CHameleon 的功能。我不明白第8行理论上意味着什么。
我认为这意味着生成将在内部类外部访问的 JFrame 的重复版本,以便操作预期的 JFrame 对象。
编辑:代码带来空指针异常错误,因为 JFrame 对象从未被引用。解决方案:将JFrame框架修改为最终的JFrame框架。
这就提出了一个问题:如果有多个 JFrame 怎么办?
例如,如果我有一个班级花园,里面有不同的蔬菜,我创建了一个内部班级色板来为这些蔬菜着色。是创建针对特定蔬菜的特定类的唯一解决方案吗?因此,为了回答我自己的问题,在多个 JFrame 的情况下,它们会显示为不同类型的类,我的情况是?
public class LabelsButtonsPanelsandSnakes {
public static void main(String[] args){
final JFrame frame = new JFrame("Test");
JMenuBar menuBar = new JMenuBar(); //menubar
JMenu menu = new JMenu("Menu");
JMenuItem chameleon = new JMenuItem("Change Color");
class CHameleonaction implements ActionListener{ //inside class opens
JFrame frameHolder; //line 8
public void actionPerformed(ActionEvent e)
{
frame.getContentPane().setBackground(new Color(112,253,95));
}
} //inside class ends
chameleon.addActionListener(new CHameleonaction());
menuBar.add(menu);
frame.setJMenuBar(menuBar);
}
Run Code Online (Sandbox Code Playgroud) 我使用 CODESYS 制作了一个功能块来执行电能计量。该功能块的输入是电流和电压,输出是能量。现在,我们需要有 1000 个该功能块的实例来运行我们拥有的 1000 米的代码。编写(可能还有复制和粘贴)这些实例似乎并不是最有趣的工作。想知道是否有人有更聪明的方法来进行如此众多的实例化。
例如,以下是 2 个实例的代码(在 CODESYS 中)的样子:
meter_instance1(CURRENT:=I1, VOTAGE:=V2);
Energy1:= meter_instance1.ENERGY;
meter_instance2(CURRENT:=I2, VOTAGE:=V2);
Energy2:= meter_instance2.ENERGY;
Run Code Online (Sandbox Code Playgroud)
我们希望有 1000 个实例。任何想法都会受到高度赞赏。
我有这两种方法来设置我在SO中看到的字符串。
我想知道其中一种相对于另一种的优势是什么,以及是否有人可以给我该语法的文章或文档的链接。
我相信第一个称为计算属性,并且我已阅读 swift.org 上的计算属性部分。
我认为第二个实际上只是将常量名称“string2”设置为闭包,但我可能没有将其称为正确的事情,这就是我问的原因,因为我真的找不到任何关于它的文章或文档。谢谢提前寻求任何帮助。
var string1: String { return "My first string"}
let string2 = { return "My second string"}()
Run Code Online (Sandbox Code Playgroud) 我的主资产文件夹中有一个脚本,名为BezierWalk.cs
在另一个脚本中Spawn,我尝试实例化预制件中的对象Sphere并附加到BezierWalk.cs它们。
Spawn脚本:
public class Spawn : MonoBehaviour
{
public GameObject Sphere;
//string ScriptName = "BezierWalk";
void Start()
{
Vector3 vSpawnPos = transform.position;
for (int i = 0; i < 20; i++)
{
var objectYouCreate = Instantiate(Sphere, vSpawnPos, transform.rotation);
//objectYouCreate.AddComponent<T>("Assets/BezierWalk.cs");
//objectYouCreate.AddComponent(typeof(ScriptName)) as ScriptName;
//objectYouCreate.AddComponent<ScriptName>();
//var myScript = Sphere.AddComponent<BezierWalk.cs>();
vSpawnPos.z += 20;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以看到注释掉的尝试...
我应该如何正确地做到这一点?谢谢。
我的理解是,专门化的声明或typedef应该导致模板类被实例化,但这似乎不会发生在gcc中.例如,我有一个模板类,模板类Foo {};
我写
class Foo<double>;
Run Code Online (Sandbox Code Playgroud)
要么
typedef Foo<double> DoubleFoo;
Run Code Online (Sandbox Code Playgroud)
但在编译之后,生成的目标文件的符号表不包含Foo的成员.
如果我创建一个实例:
Foo<double> aFoo;
Run Code Online (Sandbox Code Playgroud)
当然,符号都是生成的.
有没有其他人经历过这个和/或有解释?
我一直都被教导过
1. Class c(arg);
Run Code Online (Sandbox Code Playgroud)
和
2. Class c = arg;
Run Code Online (Sandbox Code Playgroud)
是两个完全相同的陈述,但看看这种情况.
#include <iostream>
class Intermediary {
};
class Left {
public:
Left(const Intermediary &) {
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
};
class Right {
public:
// The argument is there just so that the example can work, see below
Right(int) {
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
operator Intermediary () const {
std::cout << __PRETTY_FUNCTION__ << std::endl;
return Intermediary();
}
};
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样做:
Left l = Right(0);
Run Code Online (Sandbox Code Playgroud)
编译器会抱怨
error: conversion …Run Code Online (Sandbox Code Playgroud) 好吧,我也是SO,OOP和python的新手,所以请温柔;)
我在其他地方寻找与此范围问题相关的线索和解释,但没有发现任何问题.如有任何帮助,我将不胜感激.
示例代码:
class Zeus(object):
def __init__(self):
self.name='zeus'
self.maze=Maze()
self.maze.get_zeus_name_1()
self.maze.get_zeus_name_2(self)
self.get_name_1()
self.get_name_2(self)
def get_name_1(self):
try:
print zeus.name
except:
print "impossible!?"
def get_name_2(self,scope):
print scope.name
class Maze(object):
def get_zeus_name_1(self):
try:
print zeus.name
except:
print "can't be done!?"
def get_zeus_name_2(self,scope):
print scope.name
zeus=Zeus()
print 'now external calls:'
zeus.maze.get_zeus_name_1()
zeus.maze.get_zeus_name_2(zeus)
zeus.get_name_1()
zeus.get_name_2(zeus)
Run Code Online (Sandbox Code Playgroud)
输出:
can't be done!?
zeus
impossible!?
zeus
now external calls:
zeus
zeus
zeus
zeus
Run Code Online (Sandbox Code Playgroud)
在实例化期间zeus,如果__init__方法创建另一个类的实例maze,则此新实例无法访问其创建者对象zeus(除非self传递给它).(另外,如果__init__方法在其自己的类中调用方法get_name_1,则该方法也无法访问其对象属性(除非self …
我在Python中遇到了一个我无法相信的问题.请参阅以下代码:
class Container(object):
array = []
def __init__(self):
print self.array
for i in range(0, 5):
container = Container()
container.array.append('Test')
print 'Last Container:', container.array
Run Code Online (Sandbox Code Playgroud)
输出是:
[]
['Test']
['Test', 'Test']
['Test', 'Test', 'Test']
['Test', 'Test', 'Test', 'Test']
Last Container: ['Test', 'Test', 'Test', 'Test', 'Test']
Run Code Online (Sandbox Code Playgroud)
我认为Container该类在实例化时使用顶部的值进行初始化.为什么不是这样?
谢谢!
我知道在SO上已经多次回答了这个问题,但是我仍然没有弄清楚实例化类的确切含义.我读了这篇文章,这确实有助于我理解.
我知道像这样的静态类Console不能与new表达式一起使用,Console c = new Console()因为该类中没有任何实例变量.我也知道静态类提供"泛型"方法,通常用于Math函数.我知道,一旦你实例化一个类,Double d = new Double();你现在可以访问类中的任何方法Double.
我知道这些事实,但我觉得我真的不明白他们实际上是什么意思.有人可以给出一个静态类绝对必要的例子,以及创建类的实例是绝对必要的吗?
在R6中,如何在不创建生成器对象实例的情况下获得类继承的完整列表?
考虑以下:
A = R6::R6Class("Base",NULL)
B = R6::R6Class("Top",inherit = A)
class(B) #Returns 'R6ClassGenerator'
B$classname #Returns 'Top'
Run Code Online (Sandbox Code Playgroud)
我想要的是 c('Top','Base','R6')
换句话说,否则会返回什么 class(B$new())
在现实世界中,我有一组复杂的继承,而且初始化程序有很多参数,有些没有默认值,因此我试图避免实例化新对象以获得此信息。