这是一个伪代码示例
vector<Fred> gFred;
{
// init gFred
Fred &fred = gFred[0];
size_t z = 0;
do
{
fred = gFred[z];
// do odd processing with fred
z++;
}
while (fred.lastElementInSet == 0);
}
Run Code Online (Sandbox Code Playgroud)
引起我注意的是gFred [0]被覆盖的事实.这让我认为,而不是将init作为对新元素的引用,
fred = gFred[z];
Run Code Online (Sandbox Code Playgroud)
实际发生的是gFred [1]覆盖了gFred [0].
我正在考虑在这里做正确的事情,就是把我自己的头脑转过头几次,把它变成一个指针实现并继续我的生活.
我是否正确诊断了这个?还是我需要更多的教育?
可以#define"覆盖"一个const变量,反之亦然?或者它会导致编译器错误?
//ONE
#define FOO 23
const int FOO = 42;
//TWO
const int FOO = 42;
#define FOO 23
Run Code Online (Sandbox Code Playgroud)
FOO在两种情况下都有什么价值,42或23?
无论是在包装中还是偶尔在基础R中,我有时想为现有功能添加一点味道.大多数情况下,这是对函数开始或结束时应该发生的微小变化(愚蠢的例子:我希望cat函数默认包含一个换行符).
现在我知道我可以通过将我的新实现分配给它的名称来简单地覆盖现有方法,但是,那么,我怎么还能使用旧的呢?在这种情况下cat,我将不得不这样做:
cat<-function(... , file = "", sep = " ", fill = FALSE, labels = NULL,
append = FALSE)
{
cat(..., "\n" , file = file, sep = sep, fill = fill, labels = labels,
append = append)
}
Run Code Online (Sandbox Code Playgroud)
这意味着cat在新实现中使用"旧" .现在,如果我对R中的调用和后期绑定有何了解,那么这将失败(无限递归).
那么有没有办法实现这一点(本着面向对象的功能覆盖的精神),而不是诉诸于此
有这样的范例吗?或者我怎样才能以最安全的方式解决这个问题?或者我只是想要太多?
编辑 @Andrie的回答:这可以很简单地完成.但是,如果我想改变包中另一个函数调用的包中某些函数的行为,Andrie的技巧将无效.
举个例子:我对glmnet包的绘图功能做了很多补充.但是如果你看看plot.cv.glmnet和喜欢,你会看到他们将调用转发到该包中的另一个函数,所以我真的需要将我的新版本注入到包中(顺便说一下,可以完成reassignInPackage) .但当然命名空间前缀将失败,因为我刚刚更换了命名空间版本.这个例子并不像看起来那样做作:我去过那里很多次.另一方面,也许有人会/我可以争辩说我应该放弃我的要求吗?那将是最好的方式呢?
我正在使用以下代码保存图像
FrameLayout mainLayout = (FrameLayout) findViewById(R.id.frame);
// File root = Environment.getExternalStorageDirectory();
// File file = new File(root, "androidlife.jpg");
// File file = new File(Environment.getExternalStorageDirectory()
// + File.separator + "/test.jpg");
Random fCount = new Random();
// for (int i = 0; i < 10; i++) { Comment by Lucifer
int roll = fCount.nextInt(600) + 1;
//System.out.println(roll);
File file = new File(Environment.getExternalStorageDirectory()
+ File.separator + "/test" + String.valueOf(roll) +".jpg" );
Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(),
mainLayout.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
mainLayout.draw(c); …Run Code Online (Sandbox Code Playgroud) 我想创建一个HashMap,其中键是一个字符串,值是一个List.所有值都来自Mysql表.问题是我有一个HashMap,其中键是正确的,而值不是正确的,因为它被覆盖.事实上,我对所有不同的键具有相同内容的相同列表.这是代码:
public static HashMap<String,List<Table_token>> getHashMapFromTokenTable() throws SQLException, Exception{
DbAccess.initConnection();
List<Table_token> listFrom_token = new ArrayList();
HashMap<String,List<Table_token>> hMapIdPath = new HashMap<String,List<Table_token>>();
String query = "select * from token";
resultSet = getResultSetByQuery(query);
while(resultSet.next()){
String token=resultSet.getString(3);
String path=resultSet.getString(4);
String word=resultSet.getString(5);
String lemma=resultSet.getString(6);
String postag=resultSet.getString(7);
String isTerminal=resultSet.getString(8);
Table_token t_token = new Table_token();
t_token.setIdToken(token);
t_token.setIdPath(path);
t_token.setWord(word);
t_token.setLemma(lemma);
t_token.setPosTag(postag);
t_token.setIsTerminal(isTerminal);
listFrom_token.add(t_token);
System.out.println("path "+path+" path2: "+token);
int row = resultSet.getRow();
if(resultSet.next()){
if((resultSet.getString(4).compareTo(path)!=0)){
hMapIdPath.put(path, listFrom_token);
listFrom_token.clear();
}
resultSet.absolute(row);
}
if(resultSet.isLast()){
hMapIdPath.put(path, listFrom_token);
listFrom_token.clear();
}
}
DbAccess.closeConnection();
return hMapIdPath;
} …Run Code Online (Sandbox Code Playgroud) 我在numbersdiv中有一些内容.单击时numbers-clicker,数字的内容将123456789保存到oldNumbers变量,内容将更改为987654321,并且opened在numbersdiv 上切换类.当我numbers-clicker再次点击时,我正在尝试恢复原来的oldNumbers,所以123456789对于numbersdiv,相反,oldNumbers被覆盖了987654321.我们如何确保oldNumbers保持为numbersdiv 的开头内容123456789?
<div id="numbers-clicker">Clicker</div>
<div id="numbers">123456789</div>
$('#numbers-clicker').off('click').on('click',function(){
$this = $(this);
var oldNumbers = $('#numbers').html();
if(!$this.is('.opened')){
$('#numbers').html('987654321');
} else {
$('#numbers').html(oldNumbers);
}
$this.toggleClass('opened')
});
Run Code Online (Sandbox Code Playgroud)
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class test3 {
public static void main(String[] args) {
//write
try {
FileWriter fw = new FileWriter("C:\\Users\\Danny\\Desktop\\Credits.txt");
PrintWriter pw = new PrintWriter (fw);
pw.println("This is just some test data");
pw.close();
}
catch (IOException e){
System.out.println("Error!");
}
//read
try {
FileReader fr = new FileReader("C:\\Users\\Danny\\Desktop\\Credits.txt");
BufferedReader br = new BufferedReader (fr);
String str;
while ((str = br.readLine()) != null ) {
System.out.println(str + "\n");
}
br.close();
}
catch (IOException e){ …Run Code Online (Sandbox Code Playgroud) 这是我目前的代码:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class WriteToFile {
public static void main(String[] args) {
}
public void Write(String content) {
BufferedWriter bw = null;
try {
//Specify the file name and path here
File file = new File("C:\\Users\\Gbruiker\\Dropbox\\Java\\Rekenen\\src\\sommen.txt");
/* This logic will make sure that the file
* gets created if it is not present at the
* specified location*/
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file);
bw = new BufferedWriter(fw);
bw.append(content); …Run Code Online (Sandbox Code Playgroud) 是的,所以我通过做一个基于小文本的RPG游戏学习语言的想法与C一起搞砸了.我按照Java的方式执行游戏的步骤,但有一些不同的解决方法,直到我遇到输出第一个字符串被我输入的第二个字符串部分覆盖的问题.这是问题发生的位(我猜).
struct character{
char firstname[100];
char lastname[100];
};
int main(){
struct character charname;
char first=charname.firstname[100];
char last=charname.lastname[100];
printf("And what do they call you?(First name)\n");
scanf("%s", &first);
printf("Any other names?(Last name)\n");
scanf("%s", &last);
printf("So you are called ");
printf("%s ", &first);
printf("%s ", &last);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
他们叫你什么?(名字)鲍勃
还有其他名字吗?(姓)Dole
所以你被称为BDole Dole
我不是BDole Dole而是Bob Dole !!!
有任何想法吗?
(刚刚意识到这里的代码输入有多可怕)
我希望Google脚本变量数据作为文本文件存储到Google驱动器中,并通过Google脚本更新该文本文件管理!
下面的代码创建一个文本文件并在其上写入数据.我想知道我以后如何更新文本文件?
function createTextFile()
{
name="testFile.txt";
name2="testFolder";
var content = "this is text data to be written in text file";
var dir = DriveApp.getFoldersByName(name2).next()
var file = dir.createFile(name, content);
}
Run Code Online (Sandbox Code Playgroud)