无论何时我写一个变量的名字,我都会得到这个恼人的IDK绿色或黄色高光.它是什么 ?如何摆脱它?
图片在这里:

因此按照惯例,因为JavaScript没有访问修饰符,所以我必须在"私有"函数名前加下划线(_).但我在这里有点困惑,比如说我正在用C++或Java编写一个类,它有两个执行内部计算的函数,第二个函数返回内部计算的结果.
所以,我有这两个功能
performInternalSecretCalculation();
getResult();
Run Code Online (Sandbox Code Playgroud)
在performInternalSecretCalculation()被认为是私人的,因为我不希望其他类担心如果处理计算,因此我不导出此函数.虽然getResult()是其他类将使用的东西,因此我公开并导出此功能.
但是在React类的情况下,我没有导出任何函数,所有在react类中定义的函数都在其中使用.那么差异化是什么?我什么时候应该在函数名称之前加上下划线?
我正在尝试编写一种从二进制搜索树中删除节点的方法.这是我删除节点的方法.
public void delete(int deletionNodeValue) {
Node<Integer> nodeToBeDeleted = getNode(deletionNodeValue);
if(nodeToBeDeleted == null) return; // No node with such value exists throw an error
if(isLeafNode(nodeToBeDeleted)) {
nodeToBeDeleted = null;
} else if (nodeToBeDeleted.getNumChildren() == 1) {
bypassNode(nodeToBeDeleted);
}else {
replace(nodeToBeDeleted, getSuccessor(nodeToBeDeleted.getValue()));
}
}
Run Code Online (Sandbox Code Playgroud)
我在叶子节点上检查了这个方法,但是在调试之后我发现执行的nodeToBeSelected=null发生,实际上没有删除节点.因为我仍然可以搜索已删除的值,程序仍然设法获取它.
tree.add(5);
tree.delete(5);
System.out.println(tree.getNode(5).getValue()); // Output : 5, should've been deleted
Run Code Online (Sandbox Code Playgroud)
这是我的getNode()方法
public Node<Integer> getNode(int searchValue) {
Node<Integer> currentNode = root;
while(currentNode != null) {
int currentNodeValue = currentNode.getValue();
if(searchValue == currentNodeValue)
return currentNode;
else …Run Code Online (Sandbox Code Playgroud) 好吧,这样的程序和工作绝对正确
#include <iostream>
using namespace std;
template <typename T>
void Swap(T &a , T &b);
int main(){
int i = 10;
int j = 20;
cout<<"i, j = " << i <<" , " <<j<<endl;
Swap(i,j);
cout<<"i, j = " << i <<" , " <<j<<endl;
}
template <typename T>
void Swap(T &a , T &b){
T temp;
temp = a ;
a = b;
b= temp;
}
Run Code Online (Sandbox Code Playgroud)
但是当我将函数的名称从Swap更改为swap时 会产生错误说明
错误:重载'swap(int&,int&)'的调用是不明确的 注意:候选者是:void swap(T&,T&)[与T = int] | || …
可能重复:
可以在其范围之外访问局部变量的内存吗?
这是一个简单的c ++函数.它的作用是将一个字符数组作为其参数和一个整数n,然后创建一个只包含n个数组元素的新字符数组.
char * cutString(char * ch , int n){
char * p = new char[n];
int i ;
for(i = 0 ; i < n ; i++)
p[i] = ch[i];
while(i <= n ){
p[i++] = '\0';
}
return p ;
}
Run Code Online (Sandbox Code Playgroud)
这很好,但如果我改变char * p = new char[n];,char p[n];我会看到有趣的人物.怎么了?前者有什么不同?另外,p是临时变量; 该函数如何成功返回?
所以,如果我想声明一个字符数组,我可以这样做
char a[2];
char * a ;
char * a = new char[2];
Run Code Online (Sandbox Code Playgroud)
忽略第一个声明,其他两个使用指针。据我所知,第三个声明存储在堆中,并使用删除运算符释放。第二个声明是否也将数组保存在堆中?这是否意味着如果某些内容存储在堆中并且未释放,则可以在文件中的任何位置使用,例如具有文件链接的变量?我在一个函数中尝试了第三个和第二个声明,然后在另一个函数中使用该变量,但它不起作用,为什么?第二个和第三个声明之间还有其他区别吗?
我有一个函数,可以使用 setInterval 在页面加载时每 5 分钟检查一次自上次访问以来的日期变化。此外,还有与每天相关的数据将存储在本地存储中。
setInterval(function(){
if(newDay()) {
today = getTodaysDay();
// store required data in the database
}
}, 30000);
Run Code Online (Sandbox Code Playgroud)
问题是,当日期发生变化并且我从数据库记录当天的数据时,我会看到“未定义”5 分钟,直到 setInterval 内的函数运行为止。有没有办法来解决这个问题?我尝试复制 setInterval 中的所有内容并将其放置在上面setInterval(function()...,但这似乎不起作用。
c++ ×4
javascript ×2
memory ×2
pointers ×2
algorithm ×1
dynamic ×1
heap-memory ×1
highlight ×1
java ×1
netbeans ×1
netbeans-7.2 ×1
react-native ×1
reactjs ×1
reference ×1
templates ×1