我正在使用JUNG2库,这样我就能想象出我创建的神经网络系统.
首先,我关注JUNG2的代码示例,并使用以下Java代码:
DirectedSparseMultigraph<Integer, Integer> graph = new DirectedSparseMultigraph<Integer, Integer>();
DelegateForest<Integer, Integer> delf = new DelegateForest<Integer, Integer>();
Factory<Tree<Integer, Integer>> delt = DelegateTree.<Integer, Integer>getFactory();
Transformer<Integer, Double> trans = new Transformer<Integer, Double>() {
@Override
public Double transform(Integer arg0) {
return 1.0;
}
};
MinimumSpanningForest2<Integer, Integer> prim = new MinimumSpanningForest2<Integer, Integer>(graph, delf, delt, trans);
Run Code Online (Sandbox Code Playgroud)
现在Scala中的等效代码:
var graph = new DirectedSparseMultigraph[Int, Int]
var delf = new DelegateForest[Int, Int]()
var delt = DelegateTree.getFactory[Int, Int]()
var trans = new Transformer[Int, Double] {
def transform(input:Int):Double = {
return …Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么声明放在func()和{}之间?
在C中,当我在函数体之前声明函数签名后面的变量时,它意味着什么?
例:
int foo (i) int i {
printf ("the value of variable 'i' is: %d", i);
return i;
}
Run Code Online (Sandbox Code Playgroud)
当我编译代码以及初始化变量i时,我得到一个编译错误:"无法初始化参数:p"
(编辑:评论后修复)
让我们采用一个类或接口A以及一个接口B,其中两者都继承了一个共同的祖先X(假设X不是Object)。让我们有一个方法,它的签名是:
<T extends A & B> void foo(final T arg)
Run Code Online (Sandbox Code Playgroud)
foo运行时的签名是什么?那是void foo(X)or void foo(Object),JVMX在运行时转换为 to吗?
def createFloatBuffer(data: Option[Quaternion]*): Option[FloatBuffer] = data match {
...
}
def createFloatBuffer(data: Option[Vector3f]*): Option[FloatBuffer] = data match {
...
}
Run Code Online (Sandbox Code Playgroud)
由于两种方法具有相同的方法签名,因此不会编译此代码.没有类型不知道调用哪种方法.
我可以重命名方法,但是我想在我的代码中重载样式.
因此,当我遇到一些稀缺资源时,我正在研究消息转发并运行一些单元测试,这些资源包括苹果公司自己的品牌文件,forwardInvocation:据我所知需要使用这些文件methodSignatureForSelector:。
现在,我得到了一个大致的想法,methodSignatureForSelector:即查看您试图将消息转发到的对象是否具有匹配的方法名称和参数,以便可以调用forwardInvocation:我的问题,这是为什么为什么在apples文档中它说要调用methodSignatureForSelector:类似的超类的实现所以...
- (NSMethodSignature*)methodSignatureForSelector:(SEL)selector
{
NSMethodSignature* signature = [super methodSignatureForSelector:selector];
if (!signature) {
signature = [surrogate methodSignatureForSelector:selector];
}
return signature;
}
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎是在说:“如果我继承的所有类都没有方法可以处理此方法,请检查替代对象是否具有此功能。”
苹果提供的例子是,在谈判方法上,战士代替外交官行事。在这个例子中,我看不出为什么要检查战士或父母中的任何一个是否有适当的方法签名来转发。因此,这使我相信存在另一个原因,这是我无法想到的,有人可以给我一个例子或帮助弄清楚我可能遗漏的地方吗?
TL; DR
为什么需要[super methodSignatureForSelector:selector];?
我有一个方法DoCleanUp(),它将要求用户继续,然后清除当前工作区.如果用户选择取消此过程,它将返回.
我的问题是,哪个签名最好表示"取消"?
bool DoCleanUp(); // return false to indicate canceled.
bool DoCleanUp(); // return true to indicate this method should be canceled.
void DoCleanUp(bool& cancel); // check parameter 'cancel' to see if this method was canceled.
更新:至于语言,它是C++\CLI或C#.
UPDATE2:现在假设我必须在DoCleanUp方法中保存文件.我将提示对话框询问用户是否保存/取消保存/取消文件.基于答案,这是我提出的:
void DoCleanUp();
DialogResult AskToSaveFile(); // return yes/no/cancel
void DoCleanUp( bool saveFile );
用法:
void DoCleanUp()
{
DialogResult result = AskToSaveFile();
if( result == DialogResult::Cancel ) return;
bool saveFile = (result == DialogResult::Yes) ? true : false;
DoCleanUp( saveFile );
}
Run Code Online (Sandbox Code Playgroud)
然后通过调用DoCleanUp(),您知道用户将有机会取消;
通过调用DoCleanUp(bool …
我正在将VB库转换为C#.我的一个方法在VB中有以下签名:
Private Shared Sub FillOrder(ByVal row As DataRowView, ByRef o As Order)
Run Code Online (Sandbox Code Playgroud)
在C#中我把它转换为:
private static void FillOrder(DataRowView row, ref Order o)
Run Code Online (Sandbox Code Playgroud)
从我的Order类中的构造函数,我调用这样的FillOrder()方法:
DataView dv = //[get the data]
if (dv.Count > 0)
{
FillOrder(dv[0], this);
}
Run Code Online (Sandbox Code Playgroud)
在VB中,这有效:
Dim dv As DataView = '[get data]'
If dv.Count > 0 Then
FillOrder(dv.Item(0), Me)
End If
Run Code Online (Sandbox Code Playgroud)
但是,在C#文件的VS10中,我在此调用下遇到红色波形,并出现以下错误:
[方法]的最佳重载方法匹配有一些无效的参数
这是VB中的工作代码.我究竟做错了什么?
我有一个功能:
def report(start=1, quantity=100, days_left=7, min_app_version=None):
Run Code Online (Sandbox Code Playgroud)
我想获取参数名称和默认值,例如
{'start':1, 'quantity':100, 'days_left':7, 'min_app_version':None}
Run Code Online (Sandbox Code Playgroud)
(或至少两个列表)来自此函数之外
当我做
import inspect
print(inspect.signature(report))
Run Code Online (Sandbox Code Playgroud)
我得到
(*args, **kwargs)
为什么“inspect.signature”看不到函数参数?
已解决:问题出在装饰器上
我试图理解,Objective-C 中的方法签名是怎样的。
介绍:
首先,让我们打破对问题的误解,它是什么,方法签名?方法签名是帮助编译器明确识别子程序的东西。我对吗?:)
所以在C语言中签名大致相当于它的原型定义:比如我们int printf( const char *format, ... );在stdlib中有函数。此函数的签名是printf。在这种情况下,我们不能在 C 语言中重载,因为编译器无法识别具有不同参数类型的函数,所以人们决定做一些像这样的棘手事情:
long int labs (long int n);
int abs (int n);
double fabs (double x);
Run Code Online (Sandbox Code Playgroud)
在 C++ 语言中,方法签名是类名、方法名和方法参数。所以在这种语言中,我们可以重载方法。
问题
我无法得到简单的答案,Objective-C 中的方法签名是什么?!我正在尝试使用我的逻辑...
1) 首先,我们不能在 Objective-C 中重载 => 方法参数不是方法签名的一部分。
2)我尝试编译具有不同返回值的代码:
@interface Foo : NSObject
- (CGFloat)method;
- (NSInteger)method;
@end
Run Code Online (Sandbox Code Playgroud)
在这种情况下我遇到错误 => 返回值不是方法签名的一部分。
我测试了不同的情况并得到了答案,Objective-C 中的方法签名是类名、方法类型(“+”或“-”)和选择器。例如,我们在类 Foo 中有方法(下面的代码):
@interface Foo : NSObject
+ (void)methodWithArgument:(NSInteger)argument;
@end
Run Code Online (Sandbox Code Playgroud)
所以这个方法的签名是+[Foo methodWithArgument:]
但是,我查看了苹果的 NSMethodSignature 文档(http://bit.ly/1tGR8zt)
NSMethodSignature 对象记录方法的参数和返回值的 …
我读了一本名为'Object First with Java'的书,在第7页中,作者提到方法签名"提供了调用该方法所需的信息".作者给出了以下例子:
void moveHorizontal(int distance)
Run Code Online (Sandbox Code Playgroud)
然而,今天当我在Pluralsight上观看关于C#的视频时,作者说"方法的返回类型不是方法签名的一部分".
我现在很困惑,想知道什么是方法签名?
我在Common我正在处理的项目的类中有一个方法,其定义如下:
public static void PopulateSoapBody<TEnum>(Object obj, string[] aMessage) where TEnum : struct, IComparable, IFormattable, IConvertible
Run Code Online (Sandbox Code Playgroud)
并且它被调用(从几个不同的类定义他们自己的枚举类型,并填充他们自己的soap体类):
DCSSCardUpdateType wsSoapBody = new DCSSCardUpdateType();
Common.PopulateSoapBody<CardPinRequest>(wsSoapBody, aMessage);
Run Code Online (Sandbox Code Playgroud)
哪里
CardPINRequest是在调用类中定义的枚举类型
wsSoapBody是Web服务中定义的类类型
aMessage是一个字符串数组(用于填充wsSoapBody)
将enum类型传递给方法时会调用什么,限制可能的类型(我想阅读它以更好地理解如何使用这样的特性)
method-signature ×12
c# ×4
java ×3
generics ×2
ios ×2
methods ×2
objective-c ×2
scala ×2
arguments ×1
asp.net ×1
c ×1
delegates ×1
function ×1
inspect ×1
method-call ×1
oop ×1
overloading ×1
parameters ×1
python ×1
python-3.x ×1
syntax ×1
type-erasure ×1