我常常发现自己对如何使用术语"参数"和"参数"感到困惑.它们似乎在编程世界中可以互换使用.
使用它们的正确惯例是什么?
我试图通过参数反射调用方法,我得到:
对象与目标类型不匹配
如果我调用没有参数的方法,它可以正常工作.如果我调用该方法Test("TestNoParameters"),则基于以下代码,它可以正常工作.但是,如果我打电话Test("Run"),我会得到一个例外.我的代码有问题吗?
我最初的目的是传递一系列对象,例如public void Run(object[] options)但这不起作用,我尝试了一些更简单的例如字符串而没有成功.
// Assembly1.dll
namespace TestAssembly
{
public class Main
{
public void Run(string parameters)
{
// Do something...
}
public void TestNoParameters()
{
// Do something...
}
}
}
// Executing Assembly.exe
public class TestReflection
{
public void Test(string methodName)
{
Assembly assembly = Assembly.LoadFile("...Assembly1.dll");
Type type = assembly.GetType("TestAssembly.Main");
if (type != null)
{
MethodInfo methodInfo = type.GetMethod(methodName);
if (methodInfo != null)
{
object result = null;
ParameterInfo[] …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个函数,它生成NSRURLSession并使用发送NSURLRequest
sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error)
Run Code Online (Sandbox Code Playgroud)
在这个任务的完成块中,我需要做一些计算,将UIImage添加到调用viewcontroller.我有一个叫做的功能
func displayQRCode(receiveAddr, withAmountInBTC:amountBTC)
Run Code Online (Sandbox Code Playgroud)
这是UIImage添加计算.如果我尝试在完成块内运行视图添加代码,Xcode会抛出一个错误,说我在后台进程中无法使用布局引擎.所以我在SO上发现了一些试图在主线程上排队方法的代码:
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(0.0 * Double(NSEC_PER_MSEC)))
dispatch_after(time, dispatch_get_main_queue(), {
let returned = UIApplication.sharedApplication().sendAction("displayQRCode:", to: self.delegate, from: self, forEvent: nil)
})
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何将参数"receiveAddr"和"amountBTC"添加到此函数调用中.我该怎么做,或者有人可以建议一种方法调用添加到应用程序主队列的最佳方法吗?
如何将参数传递给javafx中的辅助窗口?有没有办法与相应的控制器通信?
例如:用户从a中选择一个客户,TableView并打开一个新窗口,显示客户的信息.
Stage newStage = new Stage();
try
{
AnchorPane page = (AnchorPane) FXMLLoader.load(HectorGestion.class.getResource(fxmlResource));
Scene scene = new Scene(page);
newStage.setScene(scene);
newStage.setTitle(windowTitle);
newStage.setResizable(isResizable);
if(showRightAway)
{
newStage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
newStage将是新窗口.问题是,我找不到告诉控制器在哪里查找客户信息的方法(通过传递id作为参数).
有任何想法吗?
parameters dependency-injection javafx parameter-passing fxml
这是运行wget的最简单示例:
wget http://www.example.com/images/misc/pic.png
Run Code Online (Sandbox Code Playgroud)
但如果pic.png已经可用,如何使wget跳过下载?
R语言有一个很好的功能,用于定义可以采用可变数量参数的函数.例如,该函数data.frame接受任意数量的参数,并且每个参数都成为结果数据表中列的数据.用法示例:
> data.frame(letters=c("a", "b", "c"), numbers=c(1,2,3), notes=c("do", "re", "mi"))
letters numbers notes
1 a 1 do
2 b 2 re
3 c 3 mi
Run Code Online (Sandbox Code Playgroud)
函数的签名包括省略号,如下所示:
function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
{
[FUNCTION DEFINITION HERE]
}
Run Code Online (Sandbox Code Playgroud)
我想编写一个类似的函数,获取多个值并将它们合并为一个返回值(以及进行一些其他处理).为了做到这一点,我需要弄清楚如何...从函数中的函数参数"解包" .我不知道该怎么做.功能定义中的相关行data.frame是object <- as.list(substitute(list(...)))[-1L],我无法理解.
那么如何将省略号从函数的签名转换为例如列表呢?
更具体地说,我如何写get_list_from_ellipsis下面的代码?
my_ellipsis_function(...) {
input_list <- get_list_from_ellipsis(...)
output_list <- lapply(X=input_list, FUN=do_something_interesting)
return(output_list)
}
my_ellipsis_function(a=1:10,b=11:20,c=21:30)
Run Code Online (Sandbox Code Playgroud)
似乎有两种可能的方法来做到这一点.他们是as.list(substitute(list(...)))[-1L]和list(...).但是,这两者并没有完全相同.(有关差异,请参阅答案中的示例.)任何人都可以告诉我它们之间的实际区别是什么,我应该使用哪一个?
我正在尝试在Swift中运行HTTP请求,将POST 2参数发送到URL.
例:
链接: www.thisismylink.com/postName.php
PARAMS:
id = 13
name = Jack
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?
我甚至不想阅读回复.我只是想发送它来通过PHP文件对我的数据库进行更改.
我已经阅读了几篇关于Objective-C方法语法的文章,但我想我不了解一个方法的多个名称.
我正在尝试创建一个名为getBusStopswith NSString和NSTimeIntervalparameters以及返回类型的方法NSMutableArray.这是我构建方法的方法,但它在运行时显然会出错:
- (NSMutableArray *)getBusStops:(NSString *)busStop
(NSTimeInterval *)timeInterval;
Run Code Online (Sandbox Code Playgroud)
我看到了一个方法的另一个例子:
-(NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这个方法有每个参数的方法名称.我应该做同样的事情:
- (NSMutableArray *)getBusStops:(NSString *)busStop
forTime:(NSTimeInterval *)timeInterval
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个按编程方式执行segue的按钮:
- (void)myButtonMethod
{
//execute segue programmatically
[self performSegueWithIdentifier: @"MySegue" sender: self];
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以引用目标视图并传递一些参数.
我知道在prepareForSegue方法中,我可以用:来引用它myDestinationViewController *vc = [segue destinationViewController];,但我不知道如何以编程方式执行segue.
你有什么想法?
谢谢,亚萨
更新:
对不起这个问题我很抱歉!我只是发现,即使以编程prepareForSegue方式调用segue,也会调用该方法,因此可以以相同的常规方式传递参数.
我想知道是否在我的URL中使用矩阵或查询参数.我发现对该主题的旧讨论并不令人满意.
例子
乍一看,矩阵参数似乎只有优势:
paramA=val1,val2但也有缺点:
由于服务的开发人员可以选择支持矩阵参数的框架,因此唯一的缺点是浏览器默认创建查询参数.
还有其他缺点吗?你会怎么做?
parameters ×10
function ×2
methods ×2
swift ×2
arguments ×1
c# ×1
download ×1
ellipsis ×1
fxml ×1
http ×1
http-post ×1
httprequest ×1
invoke ×1
ios ×1
javafx ×1
jax-rs ×1
objective-c ×1
post ×1
r ×1
reflection ×1
rest ×1
segue ×1
storyboard ×1
syntax ×1
terminology ×1
url ×1
variadic ×1
view ×1
wget ×1