我正在尝试优化和现有的WebGL JavaScript代码,并且该代码的瓶颈在最后一个If语句中使用return,但是,返回语句似乎没有返回任何内容. function render() { if (object.loading) return; // there is no value after return // Loading is a boolean indicating if information is still being parsed from a file or not } 这是我第一次看到具有返回语句的代码,而没有指定后返回后返回的变量. 没有return程序失败,因此绝对重要. JavaScript是否具有特殊情况,可以使用return而无需指定其返回之后的内容? 解决方案 如果您使用return return没有值之后,则返回值undefined.这用于停止函数而无需返回值.如果函数在没有返回语句的情况下结束时也将返回
以下是关于 return-value 的编程技术问答
我不知道是否可以做到这一点,但是我有一个WCF服务,该服务应该返回自定义对象,该对象的集合包含一个流中的对象. 当我尝试返回此对象时,我会得到 system.runtime.serialization.invalidDataContractException:type'System.ServiceModel.disPatcher.StreamFormatter.StreamFormatter+MessageBodyStream'无法序列化.考虑使用DataconTractAttribute属性标记它,并标记您想要使用Datamemberattribute属性序列化的所有成员.有关其他支持类型的Microsoft .NET框架文档. 如果我更改为方法,以将流以返回类型为单流返回流,则可以正常工作.对于我来说,这是太多的代码,所以我一般想知道是否有可能,如果有一些特殊的事情,我必须做一些特殊的方法才能使以sharts的自定义对象返回而没有WCF服务中的错误? 我现在在
我正在从另一家公司使用WCF服务,并且正在返回类型object的对象.是否有理由不返回实际类,并返回必须施放正确的对象? 例如,如果Web服务返回类型OrderStatus的对象,为什么要返回普通的旧object? 如果我错了,请纠正我,但这将需要我手动(通过电子邮件或其他任何内容)获得OrderStatus类的定义,然后将其放入我的解决方案中.另外,我将不得不明确地将对象施加到OrderStatus对象.更不用说公司可以更改服务以返回其他类型的对象,而我的代码将停止工作. 如果服务的返回值是类型OrderStatus的对象,则该类将自动为我生成吗? 解决方案 否,绝对不会返回"对象"! WCF应使用数据合同并定义请求的完整实现,并可能为每个调用响应对象. 请参阅有关数据合同基础知识的这两篇出色的文章: wcf tutorial">第2部分 - 数据合同 我不知道为什么这些服务的开发人员选择"对象"作为返回类型 - 对我来说没有很多意义!
这是一般编程,但是如果有所作为,我正在使用Objective-C.假设有一种返回值并执行某些操作的方法,但是您不在乎它返回的值,而只关心它所返回的内容.您会将方法称为无效吗?或将结果放入变量中,然后将其删除或忘记它?陈述您的意见,如果您有这种情况,您将要做什么. 解决方案 这样的常见示例是printf,它返回一个int ...但是您很少看到: int val = printf("Hello World"); 其他解决方案 是的,只需将该方法称为无效.您可能一直都在没有注意到它的情况下进行.分配运算符'='实际上返回一个值,但很少使用. 其他解决方案 这取决于环境(语言,工具,编码标准,...). 例如,在C中,完全有可能在不使用其值的情况下调用功能.通过返回int的某些功能,它一直都在完成. 有时不使用值会引起警告,这是不可取的.将值分配给变量,然后不使用该值只会引起有关未使用变量的另一个警告.对于这种情况,解决方案是通过将呼叫的前缀(void)前
所以,我发现了一个类似的问题>在这里,但是答案更多地是关于风格以及您是否能够做到的. 我的问题是,当您调用返回对象的非空隙函数时,实际上会发生什么,但是您从未分配或使用所述返回的对象?因此,更少关于您是否可以,因为我绝对知道您可以并理解上面链接的其他问题...编译器/运行时环境有什么? 这不是一个具体的语言问题,但是如果您回答,请指定您所指的语言,因为行为会有所不同. 解决方案 我相信,对于C#和Java,结果都在堆栈上结束,然后编译器迫使POP指令忽略它. Eric Lippert在上" 对此有更多信息. 例如,考虑以下C#代码: using System; public class Test { static int Foo() { return 10; } public static void Main() { Foo(); Foo(); } } Main方法生成的IL
我试图以无法忽略返回值的方式来确定是否可以声明C ++函数(理想地在编译时检测到).我试图用private(或在c ++ 11,delete d)operator void()声明一个类,以尝试在未使用返回值时捕获隐式转换为void. 这是一个示例程序: class Unignorable { operator void(); }; Unignorable foo() { return Unignorable(); } int main() { foo(); return 0; } 不幸的是,我的编译器(Clang-703.0.31)说: test.cpp:2:5: warning: conversion function converting 'Unignorable' to 'void' will never be used operator void(); ^ ,并且不会在调用foo()的情况下引起任何错
因此,这是我对C ++功能的第一个任务 - 我认为我知道它们与C#的方法相似.但是,尽管我的主函数良好,并且该功能运行并返回到主 - 它不会在返回时将其调用的变量信息发送回.我不确定自己做错了什么 - 它似乎是适当设置的(即喜欢我书中的示例代码以返回) 这是主要代码... #include #include #include using namespace std; int main() { double retrieveSales=0, sales1=0, sales2=0, sales3=0, sales4=0; string division, division2, division3, division4; double getSales(string); cout>division; getSales(d
假设Foo是一个相当大的数据结构.如果我不知道继承的类是否会在内部存储Foo的实例,我应该如何编写返回Foo实例的虚拟函数;因此,允许通过参考返回.如果我无法内部存储它,我的理解是我无法返回const引用它,因为它将是临时的.它是否正确?这两个选项是: virtual Foo foo() const { ... } virtual Foo const & foo() const { ... } 这是一个相关问题但是从不同的角度. 解决方案 您对值返回和const引用返回之间的差异感兴趣,这仅仅是优化问题,但事实并非如此.在每次返回不同的值之间,与每次返回参考的情况,很可能是同一对象之间有根本不同的含义,很可能会被修改: const Foo &a = myobj.foo(); myobj.modify_the_foo(); const Foo &b = myobj.foo(); a == b; // do you want this to be true or fa
如果我想致电Bar()而不是Foo(),请Bar()返回我返回foo()返回的副本(附加开销),或者它返回Foo()放置在临时的对象堆栈? vector Foo(){ vector result; result.push_back(1); return result; } vector Bar(){ return Foo(); } 解决方案 都可能发生.但是,大多数编译器在优化后不会立即复制. 您的代码表明应该有一个副本.但是,允许编译器删除任何不更改语义和程序的副本. 注意:这就是为什么您绝不应该拥有正确的副本构造函数,但要正确复制,因为您永远无法确定是否会真正完成复制. 其他解决方案 通常,它返回返回的vector的副本.但是,这在很大程度上取决于编译器所做的优化.请参阅以下讨论. 调试构建 vector Foo(){ 0041
因此,我正在调用一个辅助功能,vertex_triangle,很多东西可以让我接收vector>并将它们缠绕成有序的三角形,然后按以下顺序将它们放入vector中.我将其用作我的返回对象: template struct Triangle { Triangle(const pair& first, const pair& second, const pair& third) { data[0] = first; data[1] = second; data[2] = third; } pair data[3]; }; 所以我的弯曲辅助功能看起来像这样: template triangle vertex_triangle(const size_t index, const
在c ++中,每当函数创建数百(数百或数千)值时,我以前都会让呼叫者通过一个数组,然后我的函数填充输出值: void computeValues(int input, std::vector& output); 因此,该函数将用其计算的值填充向量output.但这并不是我现在已经意识到的,这不是真正的C ++样式. 以下功能签名更好,因为它不承诺使用std::vector,但可以使用任何容器: void computeValues(int input, std::insert_iterator outputInserter); 现在,呼叫者可以用一些inserter致电: std::vector values; // or could use deque, list, map, ... computeValues(input, std::back_inserter(values)); 再次,我们不承诺具体使用std::ve
我知道这是一个非常糟糕的主意,所以关于如何有效做到的其他建议将被备受好评. 这是事情.我有map >,我想搜索一个键并返回其相应的值(在这种情况下,字符串向量).我坚持要返回(而不是迭代)的原因是我需要在其他一些向量中搜索返回的值. 一个例子将表明这一点: Input: key1 ---> {2,3,4} key2 ---> {1} key3 ---> {2,12,11,9} 对于Key1作为输入,应返回具有值2,3,4的向量.现在,需要在其他字符串向量中搜索这2,3,4个值.最有效的方法是什么? 我尝试了这样的事情: vector returnEdges(string key) { for (map >::iterator it=outgoing.begin(); it!=outgoing.end();++it) {
我有两个功能,我正在尝试使用第二个功能的结果.它要转到else部分,但是它没有打印出" cus_number"的任何东西. 如何打印" cus_number"? Function getNumber number = "423" End Function cus_number = getNumber If (IsNull(cus_number)) Then WScript.Echo "Number is null" Else WScript.Echo "cus_number : " & cus_number End If 解决方案 要从vbscript函数返回值,将值分配给该函数的名称,例如: Function getNumber getNumber = "423" End Function 其他解决方案 这就是您可以从vbs中的函数返回值的方式: Function shouldSendEmail(Line)
所以这是我从未尝试过的东西,但是我想我想在MS Access数据库中创建一个指标仪表板.所以我认为我需要问的第一个问题是 如何将值返回到表单?如果我ave汇总查询是十大总销售额,我不仅可以指定我希望最高结果来自的查询,还可以指定"上/第一列记录"(以降序列出?我应该使用单个文本框? 我认为使用数据表视图制作子形式将显示给定查询的整个结果,但是我也想仅列出几个查询的最高值... 谢谢,我敢肯定,这只会引起更多问题! 解决方案 您可以使用子形式或列表框.可以在运行时设置ListBox的ControlSource属性和子图的Recordsource属性.可以在Jet SQL中设置要返回的顶值的数量.请注意,顶部从索引返回所有匹配值,因此,如果有 n 等值的值,top 1,例如,将返回 n 记录. SELECT TOP 10 Field1, Field2 FROM tblTable ORDER BY Field1 或 SELECT TOP 10% Fie
我想编写一个函数来返回整数数组,以便我可以索引它们,但是我不知道VBA的语法.这是伪代码: function getStats() as integer dim returnVal(4) as integer returnVal(0)=c2percent14 returnVal(1)=c3percent14 returnVal(2)=c4percent14 returnVal(3)=c5percent14 getStats=returnVal end function msgbox getStats(3) 这些值都是整数,或者应该是,然后我可以为我想要的统计数据索引返回数组. 如何从函数返回数组? 解决方案 Function getStats() As Variant getstats = Array(c2percent14, c3percent14, c4percent14, c5percent14) E
所以我想知道,如何从函数,sub或type中返回vba中的多个值? 我有这个主要子,应该从多个函数中收集数据,但是一个函数只能返回一个值.那么我如何将多个返回到子? 解决方案 您可能想重新考虑应用程序的结构,如果您真的希望一种方法返回多个值. 要么将事物分开,因此不同的方法返回不同的值,或者找出逻辑分组并构建一个对象以固定可以返回的数据. ' this is the VB6/VBA equivalent of a struct ' data, no methods Private Type settings root As String path As String name_first As String name_last As String overwrite_prompt As Boolean End Type Public Sub Main() Dim mySettings As settings
如果通过参考返回数组,为什么不进行以下工作: 'Class1 class module Private v() As Double Public Property Get Vec() As Double() Vec = v() End Property Private Sub Class_Initialize() ReDim v(0 To 3) End Sub ' end class module Sub Test1() Dim c As Class1 Set c = New Class1 Debug.Print c.Vec()(1) ' prints 0 as expected c.Vec()(1) = 5.6 Debug.Print c.Vec()(1) ' still prints 0 End Sub 解决方案 在VBA中,除非通过A ByRef参数返回,否则永远不会通过参考返回数组.此外,每当您使用=将数组分配
如何返回功能的结果? 例如: Public Function test() As Integer return 1 End Function 这给出了一个编译错误. 如何使此功能返回整数? 解决方案 对于非对象返回类型,您必须将值分配给函数的名称,例如: Public Function test() As Integer test = 1 End Function 示例用法: Dim i As Integer i = test() 如果函数返回对象类型,则必须使用Set关键字: Public Function testRange() As Range Set testRange = Range("A1") End Function 示例用法: Dim r As Range Set r = testRange() 请注意,将返回值分配给函数名称不会终止您的函数的执行.如果要退出该功能,则需要明确说
i具有函数中的函数,我需要内部函数使其在父函数的范围中可用,例如: function sayMyName(){ getName(); // inner function generates $name value echo $name; // use $name } sayMyName(); 我可以轻松地将两种功能的事情全球化...但是我的情况要复杂得多,并且处理更多的变量,而全球化每个变量都有些乏味. 谢谢. ps 我注意到很多"返回"建议.抱歉,我不清楚,我需要返回更多变量..这不是一个简单的返回.谢谢大家 解决方案 您可以使用$_GLOBALS,但这是"不良练习".所以, 1:使用 return :