ক্লোজুরে একটি `রেফার ইতিহাস অ্যাক্সেস করা


9

সুত্র ডকুমেন্টেশন শো উত্তর: সর্বোচ্চ ইতিহাসে বিকল্প এবং রাজ্যের যে "refs যেমন পঠিত দাবী সঙ্গে চুক্তি করা প্রয়োজন পরিবর্তনশীল ইতিহাস বাড়তে থাকে।" আমি দেখতে পাচ্ছি যে রিপাবলীতে ইতিহাস রয়েছে, তবে কোনও রেফারেন্সের পূর্ববর্তী মানগুলি কীভাবে সন্ধান করতে হয় তা আমি দেখতে পাই না:

user=> (def the-world (ref "hello" :min-history 10))
#'user/the-world
user=> (do
          (dosync (ref-set the-world "better"))
          @the-world)
"better"
user=> (let [exclamator (fn [x] (str x "!"))]
          (dosync
           (alter the-world exclamator)
           (alter the-world exclamator)
           (alter the-world exclamator))
          @the-world)
"better!!!"
user=> (ref-history-count the-world)
2

সম্ভবত দুনিয়াতে "হ্যালো", "আরও ভাল" এবং "আরও ভাল !!!" মান রয়েছে had আমি কীভাবে সেই ইতিহাসটি অ্যাক্সেস করব?

যদি সেই ইতিহাসটি অ্যাক্সেস করা সম্ভব না হয়, তবে এমন কোনও ডেটাটাইপ রয়েছে যা তার মানগুলির একটি ইতিহাস রাখে যা পরে জিজ্ঞাসা করা যেতে পারে? বা এ কারণেই কেন ডেটামিক ডাটাবেস তৈরি হয়েছিল?

উত্তর:


7

আমি বিশ্বাস করি: ন্যূনতম-ইতিহাস এবং: সর্বাধিক ইতিহাস কেবল লেনদেনের সময় কোনও রেফের ইতিহাস উল্লেখ করে।

তবে এটি একটি পরমাণু এবং একটি পর্যবেক্ষক দিয়ে করার উপায় এখানে:

user> (def the-world (ref "hello"))
#'user/the-world
user> (def history-of-the-world (atom [@the-world]))
#'user/history-of-the-world
user> history-of-the-world
#<Atom@6ef167bb: ["hello"]>
user> (add-watch the-world :historian
                 (fn [key world-ref old-state new-state]
                   (if (not= old-state new-state)
                     (swap! history-of-the-world conj new-state))))
#<Ref@47a2101a: "hello">
user> (do
        (dosync (ref-set the-world "better"))
        @the-world)
"better"      
user> (let [exclamator (fn [x] (str x  "!"))]
        (dosync
          (alter the-world exclamator)
          (alter the-world exclamator)
          (alter the-world exclamator))
        @the-world)
"better!!!"
user> @history-of-the-world
["hello" "better" "better!!!"]

এটি কি পরমাণুর সাথেও একই কাজ করবে?
ইয়াজ ডটকম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.