我有一些引发PropertyChanged
事件的代码,我希望能够对事件正确引发的单元测试.
提升事件的代码就像
public class MyClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public string MyProperty
{
set
{
if (_myProperty != value)
{
_myProperty = value;
NotifyPropertyChanged("MyProperty");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我从单元测试中的以下代码中获得了一个很好的绿色测试,它使用了委托:
[TestMethod]
public void Test_ThatMyEventIsRaised()
{
string actual = null;
MyClass myClass = new MyClass();
myClass.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
{
actual = e.PropertyName;
};
myClass.MyProperty = "testing";
Assert.IsNotNull(actual);
Assert.AreEqual("MyProperty", actual); …
Run Code Online (Sandbox Code Playgroud) 当我右键单击并尝试在Mac OS Mojave上的Microsoft Visual Studio Code中重命名变量名时,会提示您输入新名称,我按Enter键,但没有任何反应。
我安装了Python扩展和Latex扩展。
通常没有错误,什么也没有。
有时,会弹出一个小框,上面写着“无结果。无结果”。
我选择的python解释器是Conda安装。
我确保安装了绳索和pylint。
预期的行为:右键单击>重命名符号>键入新名称>输入>重命名变量的所有实例。
观察到的行为右键单击>重命名符号>输入新名称>输入>变量在任何地方都具有相同的名称,包括重命名位置。
我是 Jupyter 笔记本的新手,也是 Markdown 的新手。它似乎是一个非常强大的工具,用于共享混合 python 代码和文本。我想做的一件事是使用 Markdown 语法对旁注使用 Tufte 风格的格式。
类似于https://bookdown.org/yihui/rmarkdown/tufte-handouts.html
也许这个功能比看起来更容易,因为上面的链接似乎正在使用 markdown,所以我怀疑这是可能的。但是我似乎不知道如何解决这个问题。
我读到:How do I set custom CSS for my IPython/IHaskell/Jupyter Notebook?
%%html
<style>
// add your CSS styling here
</style>
Run Code Online (Sandbox Code Playgroud)
这显示出潜力。我对CSS 的了解非常少。
然而,由于我的菜鸟,我不知道如何向 Jupyter 笔记本添加这样的自定义功能。任何帮助,将不胜感激。
我最近一直在尝试统一对象池,以便一次加速几个游戏对象的实例化.
但是,由于这些是相当复杂的对象,我需要在它们返回池中时重置它们.
我读到使用ScriptableObject可能是存储默认值以便轻松重置的好方法.但为了做到这一点,我需要在运行时加载一个新的ScriptableObject来存储对象的实际值.
所以在伪代码中,我有一个带public MyScriptableData data
和的类public MyScriptableData defaults
1)使用默认的ScriptableObject创建新的池化对象data = defaults;
;
2)做一些在对象生命周期内改变脚本对象值的东西
3)取消激活,然后将池化对象返回池,将scriptableObject重置为默认值(data = defaults;
再次).
我有3个主要问题:
A)我不确定如何实际实现这一点.在我看来,在步骤2中,默认值将被更改.因此,重置为默认值将不起作用.我考虑过使用创建脚本对象的新实例
data = ScriptableObject.CreateInstance<MyScriptableData>();
但是,我将如何复制默认值defaults
,确保永远不会更改默认值?我希望默认值可以在Unity编辑器中作为资产进行编辑.
B)如果我使用CreateInstance,性能会不好?我正在做这个对象池的全部原因是为了降低对象实例化的性能成本.我不想通过实例化脚本化对象来重新引入慢速代码.
C)这种方法好吗?或者是否有更好的方法在返回池之前重置对象?
编辑基于一些答案:我已经有一个具有很长字段列表的设置,然后将这些字段的默认值存储在字典中.但我发现每次我想添加/更改/删除字段时,我都必须在几个位置更改代码
ATTEMPTED SOLUTION(但错误,见下文):我为ScriptableObject创建了一个扩展方法:
using UnityEngine;
using System.Reflection;
public static class ScriptableObjectExtension {
public static T ShallowCopy<T> (this T orig) where T : ScriptableObject {
T copiedObject = ScriptableObject.CreateInstance<T> ();
FieldInfo[] myObjectFields = orig.GetType ().GetFields (
BindingFlags.NonPublic | BindingFlags.Public |
BindingFlags.Instance);
foreach (FieldInfo fi in myObjectFields) {
fi.SetValue (copiedObject, …
Run Code Online (Sandbox Code Playgroud) 我刚刚开始第一次使用 F#,使用 VSCode 和交互式笔记本。我对不得不不断地写出来感到非常恼火
printfn "%A" something
Run Code Online (Sandbox Code Playgroud)
因为它杀死了我的内心。
在每个文件的开头简单地写:
let print(something) = printfn "%A" something
// then use with
print(4 + 3) // int
print(3.7 + 1.1) //float
print("this is so much better") // text
Run Code Online (Sandbox Code Playgroud)
为什么这个不内置?