Düşünüyorum ama aklıma bir şey gelmiyor.
Denildi ki, bir fonksiyon olacak ve içinde bir değişken tutulacak 0 diye.
Bu fonksiyon her çağırıldığında değeri 1 artırarak ekrana yazdırılacak.
Nasıl yaparız?
Yasaklar: Fonksiyon dışında değişken tutmak yasak, local storage, cache, database vs dışarıda bir değer tutmak yasak.
İç içe fonksiyon koyup değişkeni dıştakinde tutsam, içte hesaplama yaptırsam diyorum ama fonksiyon sıfırdan çağırılınca her türlü değer sıfırlanıyor.
Atladığım ve javascriptten faydalanamadığım ufak bit trick var gibi. Bunu yapıp anlatabilecek var mı?
Örn:
calisTurko(){
...
...
}
calisTurko() //1
calisTurko() //2
calisTurko() //3
Edit: Javascript sorusu. React/React Native mülakatıydı.
javascriptten emin degilim ama fonksiyonun icinde static variable tutabilirsin.
void calisTurko()
{
static int i = 0;
printf("%d\n", i++);
}
bu c++'ta istedigini yapmasi lazim.
#include <stdio.h>
void foo()
{
int a = 10;
static int sa = 10;
a += 5;
sa += 5;
printf("a = %d, sa = %d\n", a, sa);
}
int main()
{
int i;
for (i = 0; i < 10; ++i)
foo();
}
This prints:
a = 15, sa = 15
a = 15, sa = 20
a = 15, sa = 25
a = 15, sa = 30
a = 15, sa = 35
a = 15, sa = 40
a = 15, sa = 45
a = 15, sa = 50
a = 15, sa = 55
a = 15, sa = 60
evet hatırladım static tutulan değişkenler bellekte hep kalıyorlar ama soru aslına javascript sorusuydu ve eğer bir class yok ise static variable tanımlanmıyor diye biliyorum.
farklı bir yöntem lazım sanırım.
mesela benzer bir soru sorulmuş ama alttaki cevap yasaklar arasına girdiği için kabul edilmiyor: stackoverflow.com
import React, { useState } from 'react';
function IncrementVariable() {
// Initialize a state variable named 'count', and a state setter function named 'setCount'
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
export default IncrementVariable;
closure'da tutmak yasak mı? değilse self executing function içinde tutarsın variable'i, sonra da başka fonksiyon dönersin. o fonksiyon o context'e erişebilir, başka bir yerden erişilemez.
a = (function() {var val = 0; return function() {return ++val}})()
a() // 1
a() // 2
....
Ic ice fonksiyon dogru cevap. Closure diye arayip bulabilirsiniz.
funtion getIncrementor() {
let counter = 0;
return function () {
return counter++;
}
}
const increment = getIncrementor();
console.log(increment());
console.log(increment());
console.log(increment());
Ilk basilan deger 1 olsun isterseniz ++counter olacak tabi :)
Closure olayını bilmiyordum sanırım ölçülmesi gereken bilgi buydu teşekkür ederim ^^
Generator / Iterator sormuşlar direkt.
Fonksiyon bu:
function* it() {
let i = 0;
while(true){
i++;
yield i;
}
return i;
}
Kullanırken de:
let x = it()
x.next().value // 1
x.next().value // 2
x.next().value // 3
diye diye kullanabiliyorsun.