我想在Go中创建一个链接API的方法.在所有示例中,我都可以发现链式操作似乎总能成功,我无法保证.因此,我尝试扩展这些以添加错误返回值.
如果我这样做的话
package main
import "fmt"
type Chain struct {
}
func (v *Chain)funA() (*Chain, error ) {
fmt.Println("A")
return v, nil
}
func (v *Chain)funB() (*Chain, error) {
fmt.Println("B")
return v, nil
}
func (v *Chain)funC() (*Chain, error) {
fmt.Println("C")
return v, nil
}
func main() {
fmt.Println("Hello, playground")
c := Chain{}
d, err := c.funA().funB().funC() // line 24
}
Run Code Online (Sandbox Code Playgroud)
编译器告诉我chain-err-test.go:24: multiple-value c.funA() in single-value context
并且不会编译.有没有一个好方法,所以funcA,funcB和funcC可以报告错误并停止该链?
我正在编写一个程序,将二进制数转换为十进制数,并且只是一个新手程序员.我试图确定输入的字符串是二进制数字,这意味着它只包含1和0.到目前为止我的代码是:
String num;
char n;
Scanner in = new Scanner(System.in);
System.out.println("Please enter a binary number or enter 'quit' to quit: ");
num = in.nextLine();
n = num.charAt(0);
if (num.equals("quit")){
System.out.println("You chose to exit the program.");
return;
}
if (n != 1 || n != 0){
System.out.println("You did not enter a binary number.");
}
Run Code Online (Sandbox Code Playgroud)
原样,无论输入什么(除了退出),程序输出"你没有输入二进制数",即使输入二进制数.我确信我的if语句是错误的,或者我的角色声明是错误的,但是我已经尝试了我个人知道的所有内容来纠正这个问题,我找不到任何在线帮助.任何帮助,将不胜感激.
PHP 5.3已经发布了一段时间,开发人员试图将向后兼容性的数量保持在较低水平.使用PHP 5.3测试/迁移代码时发现了哪些问题?
在Linux,FreeBSD和其他系统上,我有valgrind用于检查内存错误,如无效读取等.我真的很喜欢valgrind.现在我必须在Solaris/OpenSolaris上测试代码,并且无法找到一种方法来获取有关无效读/写的信息,并以与valgrind相同的方式(或更好;-)).
在网上搜索时,我找到了对libumem的引用,但我只得到有关内存泄漏的报告,而不是无效访问.我错过了什么?
我正在使用OOo SDK构建Java应用程序,我在OpenOffice Impress演示文稿中操作幻灯片.我知道如何获得包含单个幻灯片的对象,现在我正在寻找一种将幻灯片从演示文稿复制到另一个幻灯片的方法.
那是(缩短)我打开文件和选择幻灯片的方法:
String filename = "file://....odp";
int offset = 2;
XComponent xSourceComponent = xComponentLoader.loadComponentFromURL(filename, "_blank", 0, loadProps);
XComponent xTargetComponent = xComponentLoader.loadComponentFromURL("private:factory/simpress", "_blank", 0, loadProps);
XDrawPages xDrawPages = ((XDrawPagesSupplier)UnoRuntime.queryInterface(
XDrawPagesSupplier.class, xSourceComponent)).getDrawPages();
XPresentationPage xPage = (XPresentationPage)UnoRuntime.queryInterface(XPresentationPage.class,
xDrawPages.getByIndex(offset));
Run Code Online (Sandbox Code Playgroud)
基于我试图获得这样的可转移对象:
XTransferable t = (XTransferable)UnoRuntime.queryInterface(
XTransferable.class, xPage);
Run Code Online (Sandbox Code Playgroud)
但这似乎并不受支持.任何人都知道如何做到这一点?
我正在开发一个小型的C#GUI工具,它应该获取一些C++代码并在完成一些向导后编译它.如果我在运行着名的程序后从命令提示符运行它,这一切都很好vcvarsall.bat
.现在我希望用户不要先进入命令提示符,而是让程序调用vcvars
后跟nmake
我需要的其他工具.为了工作,vcvars
显然应该保留设置的环境变量.
我怎样才能做到这一点?
我能找到的最好的解决方案是创建一个临时cmd
/ bat
脚本来调用其他工具,但我想知道是否有更好的方法.
更新:我同时试验了批处理文件和cmd.当使用批处理文件时,vcvars将终止完整的批处理执行,因此我的第二个命令(即nmake)将不会被执行.我目前的解决方法是这样的(缩短):
string command = "nmake";
string args = "";
string vcvars = "...vcvarsall.bat";
ProcessStartInfo info = new ProcessStartInfo();
info.WorkingDirectory = workingdir;
info.FileName = "cmd";
info.Arguments = "/c \"" + vcvars + " x86 && " + command + " " + args + "\"";
info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
Process p = Process.Start(info);
Run Code Online (Sandbox Code Playgroud)
这样可行,但不会捕获cmd调用的输出.还在寻找更好的东西
为什么x打印出1,2,3,4而不是4,3,2,1.当我打印输入[0]时,它说4.不应该通过引用传递数组吗?所以我可以用x来表示原来是x的输入?顺便说一句,这是C++.这不是另一个问题的重复.如果我在rev listo中打印出数组,它会正确打印.问题在于可以在main函数中调用数组.
using namespace std;
void rev_listo(int input[], int num)
{
int end_list[num];
for (int x = 0; x<num; x++) {
end_list[x]=input[num-x-1];
// cout<<end_list[x]<<endl;
}
// std::cout<<input<<std::endl;
input=end_list;
cout<<input[0]<<endl;
}
int main() {
int x [4];
x[0]=1;
x[1]=2;
x[2]=3;
x[3]=4;
rev_listo(x, 4);
for(int y = 0; y<4; y++) {
std::cout<<x[y]<<std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我需要用另一个单词替换一个单词.但
$var= str_replace($linklabel[$k], $linklabelmod[$k], $var);
Run Code Online (Sandbox Code Playgroud)
没有给出理想的结果.例如,我有一个字符串
$var="the theory of them thesis";
$linklabel[1]="the";
$linklabelmod[1]="hhh";
Run Code Online (Sandbox Code Playgroud)
我需要的是,我只想替换"the"这个词.但由于"the"在"理论","论文"和"他们"中重复出现,所有开始三个字母的人也都会被取代.然后输出变成 $ var ="hhh hhhh hhhh hhhsis"; //错误 但我需要输出 $ var ="hhh理论论文"; //写 我不好解释一个问题,请原谅我...
提前致谢....
从我(paxdiablo)可以从OP的评论中收集到的内容,这是修改后的代码(仍声称不起作用):
foreach($xpath->query('//a') as $element) {
$linklabel[] = $element->textContent;
$link[] = $element->getAttribute("href");
$i=$i+1;
}
for($k=0;$k<$i;$k++) {
$linklabelmod[$k] = str_replace($linklabel[$k], $linklabel[$k]."[$k]", $linklabel[$k]);
$var = preg_replace ('/\b'.preg_quote($linklabel[$k]).'\b/', $linklabelmod[$k], $var);
}
print $var; //printing web page
Run Code Online (Sandbox Code Playgroud)